aboutsummaryrefslogtreecommitdiffstats
path: root/g10/getkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/getkey.c')
-rw-r--r--g10/getkey.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/g10/getkey.c b/g10/getkey.c
index 6af6dc0a5..efb157645 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -799,10 +799,10 @@ leave:
should be freed using release_kbnode().
If RET_KDBHD is not NULL, then the new database handle used to
- conduct the search is returned in *RET_KDBHD. This can be used to
- get subsequent results using keydb_search_next. Note: in this
- case, no advanced filtering is done for subsequent results (e.g.,
- WANT_SECRET and PK->REQ_USAGE are not respected).
+ conduct the search is returned in *RET_KDBHD, holding the lock.
+ This can be used to get subsequent results using keydb_search_next.
+ Note: in this case, no advanced filtering is done for subsequent
+ results (e.g., WANT_SECRET and PK->REQ_USAGE are not respected).
This function returns 0 on success. Otherwise, an error code is
returned. In particular, GPG_ERR_NO_PUBKEY or GPG_ERR_NO_SECKEY
@@ -895,6 +895,9 @@ key_byname (ctrl_t ctrl, GETKEY_CTX *retctx, strlist_t namelist,
if (!ret_kb)
ret_kb = &help_kb;
+ if (ret_kdbhd)
+ keydb_lock (ctx->kr_handle);
+
if (pk)
{
/* It is a bit tricky to allow returning an ADSK key: lookup