about summary refs log tree commit diff
path: root/lib/util
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2013-11-28 00:07:53 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2013-11-28 00:07:53 +0000
commit9dd1c4b8f742632caabca69c0071f95587012d12 (patch)
treefeda5adb603977fb42bc04911342b1c4d6629839 /lib/util
parent819d681f0091fc68ef2c879498680845db42c49e (diff)
downloadnetpbm-mirror-9dd1c4b8f742632caabca69c0071f95587012d12.tar.gz
netpbm-mirror-9dd1c4b8f742632caabca69c0071f95587012d12.tar.xz
netpbm-mirror-9dd1c4b8f742632caabca69c0071f95587012d12.zip
Fix: wrong check or no check for asprintf/vasprintf failure
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@2041 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib/util')
-rw-r--r--lib/util/nstring.c7
-rw-r--r--lib/util/vasprintf.c6
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/util/nstring.c b/lib/util/nstring.c
index ef47cbe1..bb2ba92e 100644
--- a/lib/util/nstring.c
+++ b/lib/util/nstring.c
@@ -791,9 +791,12 @@ pm_asprintf(const char ** const resultP,
     va_list varargs;
     
 #if HAVE_VASPRINTF
+    int rc;
     va_start(varargs, fmt);
-    vasprintf((char **)&result, fmt, varargs);
+    rc = vasprintf((char **)&result, fmt, varargs);
     va_end(varargs);
+    if (rc < 0)
+        result = pm_strsol;
 #else
     size_t dryRunLen;
     
@@ -805,7 +808,7 @@ pm_asprintf(const char ** const resultP,
 
     if (dryRunLen + 1 < dryRunLen)
         /* arithmetic overflow */
-        result = NULL;
+        result = pm_strsol;
     else {
         size_t const allocSize = dryRunLen + 1;
         char * buffer;
diff --git a/lib/util/vasprintf.c b/lib/util/vasprintf.c
index 209827eb..e38252fa 100644
--- a/lib/util/vasprintf.c
+++ b/lib/util/vasprintf.c
@@ -18,9 +18,11 @@ pm_vasprintf(const char ** const resultP,
     char * result;
 
 #if HAVE_VASPRINTF
-    vasprintf(&result, format, varargs);
+    int rc;
 
-    if (result == NULL)
+    rc = vasprintf(&result, format, varargs);
+
+    if (rc < 0)
         *resultP = pm_strsol;
     else
         *resultP = result;