aboutsummaryrefslogtreecommitdiffstats
path: root/g10/import.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2025-10-22 02:03:18 +0000
committerNIIBE Yutaka <[email protected]>2025-10-22 02:03:18 +0000
commit2d9e1295a1f4a6929efeccfb1d8492eee4ff588b (patch)
tree8f988527ea48654641344f97369dd872e555eeca /g10/import.c
parentgpgsm: Fix delete and store certificate locking glitches. (diff)
downloadgnupg-2d9e1295a1f4a6929efeccfb1d8492eee4ff588b.tar.gz
gnupg-2d9e1295a1f4a6929efeccfb1d8492eee4ff588b.zip
gpg,gpgsm: Serialize write access to keybox/keyring to protect.
* g10/keydb.c (internal_keydb_update_keyblock): Caller should lock the resource by keydb_lock, before use of this routine. (internal_keydb_insert_keyblock): Likewise. (internal_keydb_delete_keyblock): Likewise. * g10/delkey.c (do_delete_key): Serialize the access to the resource. * g10/import.c (import_revoke_cert): Likewise. * g10/keyedit.c (quick_find_keyblock): Likewise. * g10/keygen.c (quick_find_keyblock): Likewise. * sm/delete.c (delete_one): Lock earlier to protect the resource correctly. * sm/keydb.c (do_set_flags): Rename from keydb_set_flags. (keydb_set_cert_flags): Follow the change. (keydb_update_cert): Require locked by caller. * sm/keydb.h (keydb_set_flags): Remove. -- GnuPG-bug-id: 7855 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/import.c')
-rw-r--r--g10/import.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/g10/import.c b/g10/import.c
index 1ee818d61..effc38a93 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -2280,7 +2280,7 @@ import_one_real (ctrl_t ctrl,
}
}
- err = keydb_insert_keyblock (hd, keyblock );
+ err = keydb_insert_keyblock (hd, keyblock);
if (err)
log_error (_("error writing keyring '%s': %s\n"),
keydb_get_resource_name (hd), gpg_strerror (err));
@@ -3618,6 +3618,13 @@ import_revoke_cert (ctrl_t ctrl, kbnode_t node, unsigned int options,
goto leave;
}
+ rc = keydb_lock (hd);
+ if (rc)
+ {
+ keydb_release (hd);
+ goto leave;
+ }
+
{
byte afp[MAX_FINGERPRINT_LEN];
size_t an;