aboutsummaryrefslogtreecommitdiffstats
path: root/g10/delkey.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/delkey.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/delkey.c')
-rw-r--r--g10/delkey.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/g10/delkey.c b/g10/delkey.c
index 458c451e0..904f4c26e 100644
--- a/g10/delkey.c
+++ b/g10/delkey.c
@@ -74,6 +74,14 @@ do_delete_key (ctrl_t ctrl, const char *username, int secret, int force,
err = classify_user_id (username, &desc, 1);
exactmatch = (desc.mode == KEYDB_SEARCH_MODE_FPR);
thiskeyonly = desc.exact;
+
+ err = keydb_lock (hd);
+ if (err)
+ {
+ keydb_release (hd);
+ goto leave;
+ }
+
if (!err)
err = keydb_search (hd, &desc, 1, NULL);
if (err)