[Pkg-gnupg-commit] [gnupg2] 254/292: g10: Fix iteration over getkey results.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Mon Nov 21 06:31:49 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch master
in repository gnupg2.

commit 1d03cc77e1706f7da653153ad4b58c61e4fd2573
Author: Justus Winter <justus at g10code.com>
Date:   Tue Nov 15 15:08:54 2016 +0100

    g10: Fix iteration over getkey results.
    
    * g10/getkey.c (getkey_next): Fix invocation of 'lookup'.  If we want
    to use RET_FOUND_KEY, RET_KEYBLOCK must be valid.
    
    Fixes-commit: 8ea72a776a88f3c851e812d258355be80caa1bc1
    Signed-off-by: Justus Winter <justus at g10code.com>
---
 g10/getkey.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/g10/getkey.c b/g10/getkey.c
index bf197b2..6232363 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -2167,6 +2167,7 @@ gpg_error_t
 getkey_next (getkey_ctx_t ctx, PKT_public_key *pk, kbnode_t *ret_keyblock)
 {
   int rc; /* Fixme:  Make sure this is proper gpg_error */
+  KBNODE keyblock = NULL;
   KBNODE found_key = NULL;
 
   /* We need to disable the caching so that for an exact key search we
@@ -2175,11 +2176,18 @@ getkey_next (getkey_ctx_t ctx, PKT_public_key *pk, kbnode_t *ret_keyblock)
      used without respecting the current file pointer!  */
   keydb_disable_caching (ctx->kr_handle);
 
+  /* FOUND_KEY is only valid as long as RET_KEYBLOCK is.  If the
+   * caller wants PK, but not RET_KEYBLOCK, we need hand in our own
+   * keyblock.  */
+  if (pk && ret_keyblock == NULL)
+      ret_keyblock = &keyblock;
+
   rc = lookup (ctx, ret_keyblock, &found_key, ctx->want_secret);
   if (!rc && pk)
     {
       log_assert (found_key);
       pk_from_block (pk, NULL, found_key);
+      release_kbnode (keyblock);
     }
 
   return rc;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list