fix(android): Sync ouvrait le coffre sans demander le code
Le garde de DoSync ne couvrait que l'empreinte, et les deux protections s'excluent : un cache scelle par un code porte VER_PIN, donc VaultNeedsAuth y est FAUX. Synchroniser reconstruisait le coffre depuis le depot et l'affichait sans que le code soit demande - il ne gardait qu'un bouton sur deux. Exiger un champ rempli n'aurait rien valu : le depot est scelle par le mot de passe de sync, pas par le code, donc rien ici ne le confronte a quoi que ce soit et n'importe quelle frappe serait passee. Seul LoadVault sait si le code est le bon, et c'est "Open vault" qui l'appelle - d'ou le renvoi vers lui. Place AVANT ReconcileWithRemote et PublishPending, qui sortent de DoSync par leurs propres chemins. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+22
@@ -2147,6 +2147,28 @@ begin
|
|||||||
end;
|
end;
|
||||||
WebCall('PM.clearLog()');
|
WebCall('PM.clearLog()');
|
||||||
|
|
||||||
|
// MEME PORTE QUE L'OUVERTURE, LE CODE DE DEVERROUILLAGE COMPRIS.
|
||||||
|
//
|
||||||
|
// Le garde suivant ne couvre que l'empreinte, et les deux protections
|
||||||
|
// s'excluent : un cache scelle par un code porte VER_PIN, donc VaultNeedsAuth
|
||||||
|
// y est FAUX et rien ne s'y opposait. Synchroniser reconstruisait alors le
|
||||||
|
// coffre depuis le depot et l'affichait sans que le code soit demande - il ne
|
||||||
|
// gardait qu'un bouton sur deux.
|
||||||
|
//
|
||||||
|
// ET C'EST L'OUVERTURE QUI VERIFIE, PAS CE GARDE. Un code tape ici ne serait
|
||||||
|
// confronte a rien : le depot est scelle par le mot de passe de sync, pas par
|
||||||
|
// le code. Se contenter d'exiger un champ rempli laisserait donc passer
|
||||||
|
// n'importe quelle frappe. Seul LoadVault sait si le code est le bon, et
|
||||||
|
// c'est "Open vault" qui l'appelle - d'ou le renvoi vers lui plutot qu'une
|
||||||
|
// verification recopiee ici.
|
||||||
|
if VaultNeedsPin and (FVault.Count = 0) then
|
||||||
|
begin
|
||||||
|
Status('Open the vault first');
|
||||||
|
WebCall('PM.focusPin()');
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
// UN COFFRE NE ICI A QUI L'ON DONNE UN DEPOT : il faut fondre les deux, pas
|
// UN COFFRE NE ICI A QUI L'ON DONNE UN DEPOT : il faut fondre les deux, pas
|
||||||
// ecraser l'un par l'autre. Sans cela le conteneur local resterait
|
// ecraser l'un par l'autre. Sans cela le conteneur local resterait
|
||||||
// l'autorite, les enregistrements n'atteindraient jamais le depot, et les
|
// l'autorite, les enregistrements n'atteindraient jamais le depot, et les
|
||||||
|
|||||||
Reference in New Issue
Block a user