|
@@ -227,29 +227,38 @@ blobmsg_open_nested(struct blob_buf *buf, const char *name, bool array)
|
|
|
return (void *)offset;
|
|
|
}
|
|
|
|
|
|
-void
|
|
|
+int
|
|
|
blobmsg_vprintf(struct blob_buf *buf, const char *name, const char *format, va_list arg)
|
|
|
{
|
|
|
va_list arg2;
|
|
|
char cbuf;
|
|
|
- int len;
|
|
|
+ char *sbuf;
|
|
|
+ int len, ret;
|
|
|
|
|
|
va_copy(arg2, arg);
|
|
|
len = vsnprintf(&cbuf, sizeof(cbuf), format, arg2);
|
|
|
va_end(arg2);
|
|
|
|
|
|
- vsprintf(blobmsg_alloc_string_buffer(buf, name, len + 1), format, arg);
|
|
|
+ sbuf = blobmsg_alloc_string_buffer(buf, name, len + 1);
|
|
|
+ if (!sbuf)
|
|
|
+ return -1;
|
|
|
+ ret = vsprintf(sbuf, format, arg);
|
|
|
blobmsg_add_string_buffer(buf);
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
-void
|
|
|
+int
|
|
|
blobmsg_printf(struct blob_buf *buf, const char *name, const char *format, ...)
|
|
|
{
|
|
|
va_list ap;
|
|
|
+ int ret;
|
|
|
|
|
|
va_start(ap, format);
|
|
|
- blobmsg_vprintf(buf, name, format, ap);
|
|
|
+ ret = blobmsg_vprintf(buf, name, format, ap);
|
|
|
va_end(ap);
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
void *
|
|
@@ -278,7 +287,8 @@ blobmsg_realloc_string_buffer(struct blob_buf *buf, unsigned int maxlen)
|
|
|
if (required <= 0)
|
|
|
goto out;
|
|
|
|
|
|
- blob_buf_grow(buf, required);
|
|
|
+ if (!blob_buf_grow(buf, required))
|
|
|
+ return NULL;
|
|
|
attr = blob_next(buf->head);
|
|
|
|
|
|
out:
|