diff options
| author | NIIBE Yutaka <[email protected]> | 2025-10-22 02:03:18 +0000 |
|---|---|---|
| committer | NIIBE Yutaka <[email protected]> | 2025-10-22 02:03:18 +0000 |
| commit | 2d9e1295a1f4a6929efeccfb1d8492eee4ff588b (patch) | |
| tree | 8f988527ea48654641344f97369dd872e555eeca /g10/delkey.c | |
| parent | gpgsm: Fix delete and store certificate locking glitches. (diff) | |
| download | gnupg-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.c | 8 |
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) |
