aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-11-07 11:53:17 +0000
committerJustus Winter <[email protected]>2016-11-07 11:57:30 +0000
commit5840353d8bbcd9e75374f3bdb2547ffa7bbea897 (patch)
tree47b55ec620e07c7e01df5aa8b8387e0d4edb62e9
parentChange all http://www.gnu.org in license notices to https:// (diff)
downloadgnupg-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.c7
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;