aboutsummaryrefslogtreecommitdiffstats
path: root/sm/keydb.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2025-10-22 01:58:48 +0000
committerNIIBE Yutaka <[email protected]>2025-10-22 01:58:48 +0000
commit3db6f9f080bc056b5e8af464eb7a5cc727ae9217 (patch)
tree1b981fd708cbc29234925550d53a3dc30485e227 /sm/keydb.c
parentkbx,gpg,gpgsm: Add FP-close method for keydb to close before unlock. (diff)
downloadgnupg-3db6f9f080bc056b5e8af464eb7a5cc727ae9217.tar.gz
gnupg-3db6f9f080bc056b5e8af464eb7a5cc727ae9217.zip
gpgsm: Fix delete and store certificate locking glitches.
* sm/keydb.c (do_insert_cert): Rename from keydb_insert_cert. Don't call unlock_all. (keydb_delete): Don't call unlock_all. (keydb_store_cert): Use keydb_lock, instead of internal lock_all directly. Follow the name change of do_insert_cert. -- GnuPG-bug-id: 7855 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'sm/keydb.c')
-rw-r--r--sm/keydb.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/sm/keydb.c b/sm/keydb.c
index 3048de44c..72bad2d60 100644
--- a/sm/keydb.c
+++ b/sm/keydb.c
@@ -1191,8 +1191,8 @@ store_inq_cb (void *opaque, const char *line)
/*
* Insert a new Certificate into one of the resources.
*/
-gpg_error_t
-keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert)
+static gpg_error_t
+do_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert)
{
gpg_error_t err;
int idx;
@@ -1255,8 +1255,6 @@ keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert)
break;
}
- unlock_all (hd);
-
leave:
if (DBG_CLOCK)
log_clock ("%s: leave (err=%s)\n", __func__, gpg_strerror (err));
@@ -1378,8 +1376,6 @@ keydb_delete (KEYDB_HANDLE hd)
break;
}
- unlock_all (hd);
-
leave:
if (DBG_CLOCK)
log_clock ("%s: leave (err=%s)\n", __func__, gpg_strerror (err));
@@ -1979,7 +1975,7 @@ keydb_store_cert (ctrl_t ctrl, ksba_cert_t cert, int ephemeral, int *existed)
if (!kh->use_keyboxd)
{
- rc = lock_all (kh);
+ rc = keydb_lock (kh);
if (rc)
return rc;
}
@@ -2024,7 +2020,7 @@ keydb_store_cert (ctrl_t ctrl, ksba_cert_t cert, int ephemeral, int *existed)
return rc;
}
- rc = keydb_insert_cert (kh, cert);
+ rc = do_insert_cert (kh, cert);
if (rc)
{
log_error (_("error storing certificate: %s\n"), gpg_strerror (rc));