diff options
author | Eike Rathke <erack@redhat.com> | 2013-07-19 17:04:07 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-07-19 17:04:07 +0200 |
commit | 56bde43451c33c242743438d01794b839cf64163 (patch) | |
tree | a5227033d7ac4747af82fdf048dd1578f7b17f06 | |
parent | 25fc6dcd6685000b5aa98e465a3beb077c6a20ee (diff) |
check return value of C99 vsnprintf()
C99 vsnprintf() returns a negative value for encoding errors, check the
return value (+ terminating NULL) for positive size before malloc(),
else return NULL in lt_strdup_vprintf().
-rw-r--r-- | liblangtag/lt-utils.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/liblangtag/lt-utils.c b/liblangtag/lt-utils.c index 96f8973..80b6e6e 100644 --- a/liblangtag/lt-utils.c +++ b/liblangtag/lt-utils.c @@ -171,9 +171,11 @@ lt_strdup_vprintf(const char *format, va_end(ap); - retval = malloc(sizeof (char) * size); - if (retval) { - vsprintf(retval, format, args); + if (size > 0) { + retval = malloc(sizeof (char) * size); + if (retval) { + vsprintf(retval, format, args); + } } } LT_STMT_END; #elif HAVE_VSNPRINTF |