diff options
author | Petr Štetiar <ynezz@true.cz> | 2020-01-14 08:57:05 +0100 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-01-20 16:54:10 +0100 |
commit | 132ecb563da794f390209c20f94d4798839dc709 (patch) | |
tree | e0f13e9e47c6567b799678bcb3230e1aab59230d | |
parent | a2aab30fc918ca1a61ef5a11fc0bd6a4aebc6306 (diff) | |
download | libubox-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.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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; |