summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2020-01-14 08:57:05 +0100
committerPetr Štetiar <ynezz@true.cz>2020-01-20 16:54:10 +0100
commit132ecb563da794f390209c20f94d4798839dc709 (patch)
treee0f13e9e47c6567b799678bcb3230e1aab59230d
parenta2aab30fc918ca1a61ef5a11fc0bd6a4aebc6306 (diff)
downloadlibubox-132ecb563da794f390209c20f94d4798839dc709.tar.gz
blobmsg: blobmsg_vprintf: prefer vsnprintf
Better safe than sorry and while at it add handling of possible *printf() failures. Reviewed-by: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Petr Štetiar <ynezz@true.cz>
-rw-r--r--blobmsg.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/blobmsg.c b/blobmsg.c
index 1dd57e1..3e34821 100644
--- a/blobmsg.c
+++ b/blobmsg.c
@@ -290,10 +290,17 @@ int blobmsg_vprintf(struct blob_buf *buf, const char *name, const char *format,
len = vsnprintf(&cbuf, sizeof(cbuf), format, arg2);
va_end(arg2);
+ if (len < 0)
+ return -1;
+
sbuf = blobmsg_alloc_string_buffer(buf, name, len + 1);
if (!sbuf)
return -1;
- ret = vsprintf(sbuf, format, arg);
+
+ ret = vsnprintf(sbuf, len + 1, format, arg);
+ if (ret < 0)
+ return -1;
+
blobmsg_add_string_buffer(buf);
return ret;