kbx: Fix an endless loop under Windows due to an incomplete fix.
authorWerner Koch <wk@gnupg.org>
Thu, 16 May 2019 11:57:04 +0000 (13:57 +0200)
committerWerner Koch <wk@gnupg.org>
Thu, 16 May 2019 11:57:04 +0000 (13:57 +0200)
* kbx/keybox-search.c (keybox_search):  We need to seek to the last
position in all cases not just when doing a NEXT.
--

This is because search from the beginning needs a keybox_search_reset.
We can only make an exception for KEYDB_SEARCH_MODE_FIRST..

Fixes-commit: 49b236af0ecbb6df67513feb4b63851f2e159ea2
Signed-off-by: Werner Koch <wk@gnupg.org>
kbx/keybox-search.c

index 1600861..77469a2 100644 (file)
@@ -932,9 +932,9 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
           return rc;
         }
       /* log_debug ("%s: re-opened file\n", __func__); */
-      if (ndesc && desc[0].mode == KEYDB_SEARCH_MODE_NEXT && lastfoundoff)
+      if (ndesc && desc[0].mode != KEYDB_SEARCH_MODE_FIRST && lastfoundoff)
         {
-          /* Search mode is next and the last search operation
+          /* Search mode is not first and the last search operation
            * returned a blob which also was not the first one.  We now
            * need to skip over that blob and hope that the file has
            * not changed.  */