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>
This commit is contained in:
Petr Štetiar 2020-01-14 08:57:05 +01:00
parent a2aab30fc9
commit 132ecb563d

View file

@ -290,10 +290,17 @@ int blobmsg_vprintf(struct blob_buf *buf, const char *name, const char *format,
len = vsnprintf(&cbuf, sizeof(cbuf), format, arg2); len = vsnprintf(&cbuf, sizeof(cbuf), format, arg2);
va_end(arg2); va_end(arg2);
if (len < 0)
return -1;
sbuf = blobmsg_alloc_string_buffer(buf, name, len + 1); sbuf = blobmsg_alloc_string_buffer(buf, name, len + 1);
if (!sbuf) if (!sbuf)
return -1; return -1;
ret = vsprintf(sbuf, format, arg);
ret = vsnprintf(sbuf, len + 1, format, arg);
if (ret < 0)
return -1;
blobmsg_add_string_buffer(buf); blobmsg_add_string_buffer(buf);
return ret; return ret;