]> granicus.if.org Git - sudo/commitdiff
If asprintf() or vasprintf() fail, set the dest pointer to NULL
authorTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 3 Jun 2015 17:07:56 +0000 (11:07 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 3 Jun 2015 17:07:56 +0000 (11:07 -0600)
like BSD and Solaris do.  This appears to be the direction glibc
is going as well.

lib/util/snprintf.c

index 25b53e68995248912debcbb79bd8fcbfb0fa17d7..b980d3dc74f0e5271afd634e612866a4fec364d3 100644 (file)
@@ -1566,8 +1566,12 @@ sudo_snprintf(char *str, size_t n, char const *fmt, ...)
 int
 sudo_vasprintf(char **str, const char *fmt, va_list ap)
 {
+       int ret;
 
-       return xxxprintf(str, 0, 1, fmt, ap);
+       ret = xxxprintf(str, 0, 1, fmt, ap);
+       if (ret == -1)
+               *str = NULL;
+       return ret;
 }
 #endif /* !HAVE_VASPRINTF || PREFER_PORTABLE_SNPRINTF */
 
@@ -1581,6 +1585,8 @@ sudo_asprintf(char **str, char const *fmt, ...)
        va_start(ap, fmt);
        ret = xxxprintf(str, 0, 1, fmt, ap);
        va_end(ap);
+       if (ret == -1)
+               *str = NULL;
        return ret;
 }
 #endif /* !HAVE_ASPRINTF || PREFER_PORTABLE_SNPRINTF */