From bf7cef8ebfb746149ff58bbf0f035530f06a2c7c Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 18 Apr 2002 10:50:05 +0000 Subject: * getkey.c (lookup): Advance the searchmode after a search FIRST. --- g10/ChangeLog | 1 + g10/getkey.c | 6 ++++++ 2 files changed, 7 insertions(+) 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)); -- cgit v1.2.3