diff options
author | Petr Štetiar <ynezz@true.cz> | 2020-01-14 10:57:05 +0300 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-01-20 18:54:10 +0300 |
commit | 132ecb563da794f390209c20f94d4798839dc709 (patch) | |
tree | e0f13e9e47c6567b799678bcb3230e1aab59230d /blobmsg.c | |
parent | a2aab30fc918ca1a61ef5a11fc0bd6a4aebc6306 (diff) |
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>
Diffstat (limited to 'blobmsg.c')
-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; |