summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-07-19 17:04:07 +0200
committerEike Rathke <erack@redhat.com>2013-07-19 17:04:07 +0200
commit56bde43451c33c242743438d01794b839cf64163 (patch)
treea5227033d7ac4747af82fdf048dd1578f7b17f06
parent25fc6dcd6685000b5aa98e465a3beb077c6a20ee (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.c8
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