diff options
author | Werner Koch <[email protected]> | 2014-05-14 14:32:49 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2014-05-14 16:13:11 +0000 |
commit | 25036ec6abbc0c9d0003dcfe227724038c35a304 (patch) | |
tree | 2628b702861e55fc78e765c531c68594fd2d4e66 /g10 | |
parent | w32: Make make_absfilename work with drive letters. (diff) | |
download | gnupg-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.c | 7 |
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) |