aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2002-04-18 10:50:05 +0000
committerWerner Koch <[email protected]>2002-04-18 10:50:05 +0000
commitbf7cef8ebfb746149ff58bbf0f035530f06a2c7c (patch)
treed107fe082d0ff9c0477f7ef6f6f0c039ca33c2b6
parent* getkey.c (premerge_public_with_secret): Fixed 0x12345678! syntax (diff)
downloadgnupg-bf7cef8ebfb746149ff58bbf0f035530f06a2c7c.tar.gz
gnupg-bf7cef8ebfb746149ff58bbf0f035530f06a2c7c.zip
* getkey.c (lookup): Advance the searchmode after a search FIRST.
-rw-r--r--g10/ChangeLog1
-rw-r--r--g10/getkey.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index a1c33f2c8..7cd5f711e 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -2,6 +2,7 @@
* getkey.c (premerge_public_with_secret): Fixed 0x12345678! syntax
for use with secret keys.
+ (lookup): Advance the searchmode after a search FIRST.
* seckey-cert.c (do_check): Always calculate the old checksum for
use after unprotection.
diff --git a/g10/getkey.c b/g10/getkey.c
index 33d4f03b5..f8c72a8fd 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -2003,6 +2003,12 @@ lookup( GETKEY_CTX ctx, KBNODE *ret_keyblock, int secmode )
rc = 0;
while (!(rc = keydb_search (ctx->kr_handle, ctx->items, ctx->nitems))) {
+ /* If we are searching for the first key we have to make sure
+ that the next interation does not no an implicit reset.
+ This can be triggered by an empty key ring. */
+ if (ctx->nitems && ctx->items->mode == KEYDB_SEARCH_MODE_FIRST)
+ ctx->items->mode = KEYDB_SEARCH_MODE_NEXT;
+
rc = keydb_get_keyblock (ctx->kr_handle, &ctx->keyblock);
if (rc) {
log_error ("keydb_get_keyblock failed: %s\n", g10_errstr(rc));