[Pkg-gnupg-commit] [gnupg2] 13/205: common: Make gnupg_exec_tool conform to spec.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed May 11 08:38:08 UTC 2016


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

dkg pushed a commit to branch experimental
in repository gnupg2.

commit d19d6e1856c9a1acbf48e8b2e39b3d9171aa9f7f
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Feb 2 18:18:31 2016 +0100

    common: Make gnupg_exec_tool conform to spec.
    
    * common/exectool.c (gnupg_exec_tool): Allocate extra byte.  Allow
    zero length read.  Append hidden byte.  Release memory on error.
    --
    
    Signed-off-by: Werner Koch <wk at gnupg.org>
---
 common/exectool.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/common/exectool.c b/common/exectool.c
index 766ee94..7b3a8f1 100644
--- a/common/exectool.c
+++ b/common/exectool.c
@@ -417,24 +417,33 @@ gnupg_exec_tool (const char *pgmname, const char *argv[],
   if (err)
     goto leave;
 
-  *result = xtrymalloc (len);
-  if (*result == NULL)
+  *result = xtrymalloc (len + 1);
+  if (!*result)
     {
       err = my_error_from_syserror ();
       goto leave;
     }
 
-  err = es_read (output, *result, len, &nread);
-  if (! err)
+  if (len)
     {
-      assert (nread == len || !"short read on memstream");
-      if (resultlen)
-        *resultlen = len;
+      err = es_read (output, *result, len, &nread);
+      if (err)
+        goto leave;
+      if (nread != len)
+        log_fatal ("%s: short read from memstream\n", __func__);
     }
+  (*result)[len] = 0;
+
+  if (resultlen)
+    *resultlen = len;
 
  leave:
-  if (input)
-    es_fclose (input);
+  es_fclose (input);
   es_fclose (output);
+  if (err)
+    {
+      xfree (*result);
+      *result = NULL;
+    }
   return err;
 }

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