[Pkg-gnupg-commit] [gnupg2] 64/160: common: Fix memory leaks.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Fri Jul 15 09:36:36 UTC 2016


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

dkg pushed a commit to branch upstream
in repository gnupg2.

commit c14ef10fc347d966a1efcb5c2000cbf3aaafa905
Author: Justus Winter <justus at g10code.com>
Date:   Tue Jun 28 17:59:17 2016 +0200

    common: Fix memory leaks.
    
    * common/ccparray.c (ccparray_put): Free old array.
    * common/stringhelp.c (do_make_filename): Free 'home'.
    * common/t-convert.c: Fix trivial memory leaks.
    * common/t-iobuf.c: Likewise.
    * common/t-mbox-util.c: Likewise.
    * common/t-name-value.c: Likewise.
    * common/t-stringhelp.c: Likewise.
    * common/t-strlist.c: Likewise.
    
    Signed-off-by: Justus Winter <justus at g10code.com>
---
 common/ccparray.c     |  1 +
 common/stringhelp.c   |  2 ++
 common/t-convert.c    |  2 ++
 common/t-iobuf.c      | 15 ++++++++++++++-
 common/t-mbox-util.c  |  2 ++
 common/t-name-value.c |  4 ++--
 common/t-stringhelp.c |  7 +++++++
 common/t-strlist.c    |  2 ++
 8 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/common/ccparray.c b/common/ccparray.c
index 490dbf5..d3c2833 100644
--- a/common/ccparray.c
+++ b/common/ccparray.c
@@ -114,6 +114,7 @@ ccparray_put (ccparray_t *cpa, const char *value)
         }
       for (n=0; n < cpa->size; n++)
         newarray[n] = cpa->array[n];
+      xfree (cpa->array);
       cpa->array = newarray;
       cpa->size = newsize;
 
diff --git a/common/stringhelp.c b/common/stringhelp.c
index 0e96c9e..95912e0 100644
--- a/common/stringhelp.c
+++ b/common/stringhelp.c
@@ -538,6 +538,7 @@ do_make_filename (int xmode, const char *first_part, va_list arg_ptr)
               home_buffer = xtrymalloc (n);
               if (!home_buffer)
                 {
+                  xfree (home);
                   xfree (name);
                   return NULL;
                 }
@@ -556,6 +557,7 @@ do_make_filename (int xmode, const char *first_part, va_list arg_ptr)
           else
             strcpy (stpcpy (stpcpy (p, home), "/"), name);
 
+          xfree (home);
           xfree (name);
           name = home_buffer;
           /* Let's do a simple compression to catch the most common
diff --git a/common/t-convert.c b/common/t-convert.c
index ad33dff..68824e0 100644
--- a/common/t-convert.c
+++ b/common/t-convert.c
@@ -234,6 +234,7 @@ test_bin2hex (void)
     fail (0);
   else if (strcmp (p, hexstuff))
     fail (0);
+  xfree (p);
 
   p = bin2hex (stuff, (size_t)(-1), NULL);
   if (p)
@@ -266,6 +267,7 @@ test_bin2hexcolon (void)
     fail (0);
   else if (strcmp (p, hexstuff))
     fail (0);
+  xfree (p);
 
   p = bin2hexcolon (stuff, (size_t)(-1), NULL);
   if (p)
diff --git a/common/t-iobuf.c b/common/t-iobuf.c
index 2835df4..0e6f508 100644
--- a/common/t-iobuf.c
+++ b/common/t-iobuf.c
@@ -190,6 +190,8 @@ main (int argc, char *argv[])
 	n ++;
       }
     assert (n == 10 + (strlen (content) - 10) / 2);
+
+    iobuf_close (iobuf);
   }
 
 
@@ -266,6 +268,8 @@ main (int argc, char *argv[])
     /* The string should have been truncated (max_len == 0).  */
     assert (max_len == 0);
     free (buffer);
+
+    iobuf_close (iobuf);
   }
 
   {
@@ -279,10 +283,12 @@ main (int argc, char *argv[])
     int c;
     int n;
     int lastc = 0;
+    struct content_filter_state *state;
 
     iobuf = iobuf_temp_with_content (content, strlen(content));
     rc = iobuf_push_filter (iobuf,
-			    content_filter, content_filter_new (content2));
+			    content_filter,
+                            state=content_filter_new (content2));
     assert (rc == 0);
 
     n = 0;
@@ -309,6 +315,9 @@ main (int argc, char *argv[])
 	    /* printf ("%d: '%c' (%d)\n", n, c, c); */
 	  }
       }
+
+    iobuf_close (iobuf);
+    free (state);
   }
 
   /* Write some data to a temporary filter.  Push a new filter.  The
@@ -346,6 +355,8 @@ main (int argc, char *argv[])
 
     assert (n == strlen (content) + 2 * (strlen (content2) + 1));
     assert (strcmp (buffer, "0123456789aabbcc") == 0);
+
+    iobuf_close (iobuf);
   }
 
   {
@@ -373,6 +384,8 @@ main (int argc, char *argv[])
     assert (n == 2);
     assert (buffer[0] == '3');
     assert (buffer[1] == '7');
+
+    iobuf_close (iobuf);
   }
 
   return 0;
diff --git a/common/t-mbox-util.c b/common/t-mbox-util.c
index dfa4ada..ff48f6c 100644
--- a/common/t-mbox-util.c
+++ b/common/t-mbox-util.c
@@ -87,6 +87,8 @@ run_test (void)
         fail (idx);
       else if (strcmp (mbox, testtbl[idx].mbox))
         fail (idx);
+
+      xfree (mbox);
     }
 }
 
diff --git a/common/t-name-value.c b/common/t-name-value.c
index fc9303b..3b01431 100644
--- a/common/t-name-value.c
+++ b/common/t-name-value.c
@@ -387,19 +387,19 @@ run_modification_tests (void)
   if (private_key_mode)
     {
       err = nvc_set_private_key (pk, key);
-      gcry_sexp_release (key);
       assert (err == 0);
 
       buf = nvc_to_string (pk);
       assert (strcmp (buf, "Key: (hello world)\n") == 0);
       xfree (buf);
-      nvc_release (pk);
     }
   else
     {
       err = nvc_set_private_key (pk, key);
       assert (gpg_err_code (err) == GPG_ERR_MISSING_KEY);
     }
+  gcry_sexp_release (key);
+  nvc_release (pk);
 }
 
 
diff --git a/common/t-stringhelp.c b/common/t-stringhelp.c
index 4f4555e..ccadf02 100644
--- a/common/t-stringhelp.c
+++ b/common/t-stringhelp.c
@@ -223,6 +223,7 @@ test_strconcat (void)
     fail (0);
   else if (errno != EINVAL)
     fail (0);
+  xfree (out);
 
 #if __GNUC__ < 4 /* gcc 4.0 has a sentinel attribute.  */
   out = strconcat (NULL);
@@ -232,6 +233,8 @@ test_strconcat (void)
   out = strconcat (NULL, NULL);
   if (!out || *out)
     fail (1);
+  xfree (out);
+
   out = strconcat ("", NULL);
   if (!out || *out)
     fail (1);
@@ -283,6 +286,7 @@ test_xstrconcat (void)
                    "1", "2", "3", "4", "5", "6", "7", NULL);
   if (!out)
     fail (0);
+  xfree (out);
 
 #if __GNUC__ < 4 /* gcc 4.0 has a sentinel attribute.  */
   out = xstrconcat (NULL);
@@ -292,6 +296,8 @@ test_xstrconcat (void)
   out = xstrconcat (NULL, NULL);
   if (!out)
     fail (1);
+  xfree (out);
+
   out = xstrconcat ("", NULL);
   if (!out || *out)
     fail (1);
@@ -534,6 +540,7 @@ test_strsplit (void)
             fail (tidx * 1000 + i + 1);
           }
 
+      xfree (fields);
       xfree (s2);
     }
 }
diff --git a/common/t-strlist.c b/common/t-strlist.c
index b033905..e49d5a7 100644
--- a/common/t-strlist.c
+++ b/common/t-strlist.c
@@ -67,6 +67,8 @@ test_strlist_rev (void)
     fail (2);
   if (s->next->next->next)
     fail (2);
+
+  free_strlist (s);
 }
 
 

-- 
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