From 5840353d8bbcd9e75374f3bdb2547ffa7bbea897 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Mon, 7 Nov 2016 12:53:17 +0100 Subject: [PATCH] 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 --- g10/getkey.c | 7 ++++--- 1 file 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;