struct blob_attr data;
} hdrbuf;
struct iovec iov = STATIC_IOV(hdrbuf);
+ int len;
int r;
/* receive header + start attribute */
if (!ubus_validate_hdr(&hdrbuf.hdr))
return false;
+ len = blob_raw_len(&hdrbuf.data);
+ if (len > ctx->msgbuf_data_len) {
+ ctx->msgbuf.data = realloc(ctx->msgbuf.data, len * sizeof(char));
+ if (ctx->msgbuf.data)
+ ctx->msgbuf_data_len = len;
+ }
+ if (!ctx->msgbuf.data)
+ return false;
+
memcpy(&ctx->msgbuf.hdr, &hdrbuf.hdr, sizeof(hdrbuf.hdr));
memcpy(ctx->msgbuf.data, &hdrbuf.data, sizeof(hdrbuf.data));