aboutsummaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2014-05-14 14:32:49 +0000
committerWerner Koch <[email protected]>2014-05-14 16:13:11 +0000
commit25036ec6abbc0c9d0003dcfe227724038c35a304 (patch)
tree2628b702861e55fc78e765c531c68594fd2d4e66 /g10
parentw32: Make make_absfilename work with drive letters. (diff)
downloadgnupg-25036ec6abbc0c9d0003dcfe227724038c35a304.tar.gz
gnupg-25036ec6abbc0c9d0003dcfe227724038c35a304.zip
gpg: Fix uninitialized access to search descindex with gpg keyboxes.
* kbx/keybox-search.c (keybox_search): Add arg R_DESCINDEX. Chnage both callers. * g10/keydb.c (keydb_search): Always set DESCINDEX. -- This only affects the new keybox for OpenPGP keys in 2.1. The bug exhibited itself by running GPA's backup command on Windows.
Diffstat (limited to 'g10')
-rw-r--r--g10/keydb.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/g10/keydb.c b/g10/keydb.c
index 9085012f7..688c24c6f 100644
--- a/g10/keydb.c
+++ b/g10/keydb.c
@@ -1319,6 +1319,9 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,
{
gpg_error_t rc;
+ if (descindex)
+ *descindex = 0; /* Make sure it is always set on return. */
+
if (!hd)
return gpg_error (GPG_ERR_INV_ARG);
@@ -1333,6 +1336,7 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,
&& keyblock_cache.kid[0] == desc[0].u.kid[0]
&& keyblock_cache.kid[1] == desc[0].u.kid[1])
{
+ /* (DESCINDEX is already set). */
if (DBG_CLOCK)
log_clock ("keydb_search leave (cached)");
return 0;
@@ -1352,7 +1356,8 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,
ndesc, descindex);
break;
case KEYDB_RESOURCE_TYPE_KEYBOX:
- rc = keybox_search (hd->active[hd->current].u.kb, desc, ndesc);
+ rc = keybox_search (hd->active[hd->current].u.kb, desc,
+ ndesc, descindex);
break;
}
if (rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF)