blobmsg: blobmsg_vprintf: prefer vsnprintf
authorPetr Štetiar <ynezz@true.cz>
Tue, 14 Jan 2020 07:57:05 +0000 (08:57 +0100)
committerPetr Štetiar <ynezz@true.cz>
Mon, 20 Jan 2020 15:54:10 +0000 (16:54 +0100)
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>
blobmsg.c

index 1dd57e1..3e34821 100644 (file)
--- 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;