[git] GnuPG - branch, master, updated. gnupg-2.2.7-214-g60c880b

by NIIBE Yutaka cvs at cvs.gnupg.org
Fri Sep 14 01:17:35 CEST 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".

The branch, master has been updated
       via  60c880bda5c9b821fd2968cf89c38c37be3c1a7b (commit)
       via  2eb481e8cc1c37378cf68a06557c4a7a625d315c (commit)
       via  64c5c45e2aa4a12d939680b9d51c8b26d61c5e9d (commit)
      from  69bab1cba07a8259b85a7911c2824724667803a4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 60c880bda5c9b821fd2968cf89c38c37be3c1a7b
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Fri Sep 14 08:11:45 2018 +0900

    g10: Fix another memory leak.
    
    * g10/skclist.c (enum_secret_keys): Use SK_LIST instead of pubkey_t.
    
    --
    
    The use of pubkey_t was wrong.  The use is just a list of keys, not
    with keyblock.  With SK_LIST, release_sk_list releases memory by
    free_public_key.
    
    Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>

diff --git a/g10/skclist.c b/g10/skclist.c
index 11c57e5..c9c41d0 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -337,7 +337,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
     kbnode_t keyblock;
     kbnode_t node;
     getkey_ctx_t ctx;
-    pubkey_t results;
+    SK_LIST results;
   } *c = *context;
 
   if (!c)
@@ -358,7 +358,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
       /* Free the context.  */
       xfree (c->serialno);
       free_strlist (c->card_list);
-      pubkeys_free (c->results);
+      release_sk_list (c->results);
       release_kbnode (c->keyblock);
       getkey_end (ctrl, c->ctx);
       xfree (c);
@@ -516,7 +516,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
           if (c->node->pkt->pkttype == PKT_PUBLIC_KEY
               || c->node->pkt->pkttype == PKT_PUBLIC_SUBKEY)
             {
-              pubkey_t r;
+              SK_LIST r;
 
               /* Skip this candidate if it's already enumerated.  */
               for (r = c->results; r; r = r->next)
@@ -537,7 +537,6 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
                 }
 
               r->pk = sk;
-              r->keyblock = NULL;
               r->next = c->results;
               c->results = r;
 

commit 2eb481e8cc1c37378cf68a06557c4a7a625d315c
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Fri Sep 14 08:02:16 2018 +0900

    g10: Fix memory leak (more).
    
    * g10/skclist.c (enum_secret_keys): Free SERIALNO on update.
    
    --
    
    Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>

diff --git a/g10/skclist.c b/g10/skclist.c
index d233549..11c57e5 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -380,6 +380,8 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
           /* Loop over the list of secret keys.  */
           do
             {
+              char *serialno;
+
               name = NULL;
               keyblock = NULL;
               switch (c->state)
@@ -415,8 +417,6 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
                 case 4: /* Get next item from card list.  */
                   if (c->sl)
                     {
-                      char *serialno;
-
                       err = agent_scd_serialno (&serialno, c->sl->d);
                       if (err)
                         {
@@ -444,9 +444,13 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
                     }
                   else
                     {
-                      if (c->serialno)
-                        /* Select the original card again.  */
-                        agent_scd_serialno (&c->serialno, c->serialno);
+                      serialno = c->serialno;
+                      if (serialno)
+                        {
+                          /* Select the original card again.  */
+                          agent_scd_serialno (&c->serialno, serialno);
+                          xfree (serialno);
+                        }
                       c->state++;
                     }
                   break;

commit 64c5c45e2aa4a12d939680b9d51c8b26d61c5e9d
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Fri Sep 14 07:55:20 2018 +0900

    g10: Fix memory leak in enum_secret_keys.
    
    * g10/skclist.c (enum_secret_keys): Don't forget to call
    free_public_key in the error return paths.
    
    --
    
    Reported-by: Philippe Antoine
    GnuPG-bug-id: 4140
    Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>

diff --git a/g10/skclist.c b/g10/skclist.c
index fd747fb..d233549 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -345,7 +345,11 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
       /* Make a new context.  */
       c = xtrycalloc (1, sizeof *c);
       if (!c)
-        return gpg_error_from_syserror ();
+        {
+          err = gpg_error_from_syserror ();
+          free_public_key (sk);
+          return err;
+        }
       *context = c;
     }
 
@@ -363,7 +367,10 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
     }
 
   if (c->eof)
-    return gpg_error (GPG_ERR_EOF);
+    {
+      free_public_key (sk);
+      return gpg_error (GPG_ERR_EOF);
+    }
 
   for (;;)
     {
@@ -475,6 +482,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
 
                 default: /* No more names to check - stop.  */
                   c->eof = 1;
+                  free_public_key (sk);
                   return gpg_error (GPG_ERR_EOF);
                 }
             }

-----------------------------------------------------------------------

Summary of changes:
 g10/skclist.c | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list