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:
r-zakarya
2026-08-28 12:41:36 +01:00
parent ac3e9db4d9
commit 138abea88d
+22
View File
@@ -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