g10: Fix crash.
authorJustus Winter <justus@g10code.com>
Mon, 7 Nov 2016 11:53:17 +0000 (12:53 +0100)
committerJustus Winter <justus@g10code.com>
Mon, 7 Nov 2016 11:57:30 +0000 (12:57 +0100)
* 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 <justus@g10code.com>
g10/getkey.c

index 648c230..59625e7 100644 (file)
@@ -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;