diff options
author | Justus Winter <[email protected]> | 2016-11-07 11:53:17 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2016-11-07 11:57:30 +0000 |
commit | 5840353d8bbcd9e75374f3bdb2547ffa7bbea897 (patch) | |
tree | 47b55ec620e07c7e01df5aa8b8387e0d4edb62e9 | |
parent | Change all http://www.gnu.org in license notices to https:// (diff) | |
download | gnupg-5840353d8bbcd9e75374f3bdb2547ffa7bbea897.tar.gz gnupg-5840353d8bbcd9e75374f3bdb2547ffa7bbea897.zip |
g10: Fix crash.
* g10/getkey.c (get_best_pubkey_byname): If 'get_pubkey_byname' does
not return a getkey context, then it can return at most one key,
therefore there is nothing to rank. Also, always initialize '*retctx'
to be on the safe side.
GnuPG-bug-id: 2828
Fixes: ab89164be02012f1bf159c971853b8610e966301
Signed-off-by: Justus Winter <[email protected]>
-rw-r--r-- | g10/getkey.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/g10/getkey.c b/g10/getkey.c index 648c23040..59625e757 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1577,18 +1577,19 @@ get_best_pubkey_byname (ctrl_t ctrl, GETKEY_CTX *retctx, PKT_public_key *pk, int rc; struct getkey_ctx_s *ctx = NULL; + if (retctx) + *retctx = NULL; + rc = get_pubkey_byname (ctrl, &ctx, pk, name, ret_keyblock, NULL, include_unusable, no_akl); if (rc) { if (ctx) getkey_end (ctx); - if (retctx) - *retctx = NULL; return rc; } - if (is_valid_mailbox (name)) + if (is_valid_mailbox (name) && ctx) { /* Rank results and return only the most relevant key. */ struct pubkey_cmp_cookie best = { 0 }, new; |