X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=blobdiff_plain;f=libubus-io.c;h=19e3c2fd29d2e27dba06e4b97dcdab25c0ec8e66;hp=78943bc83ac1535b28e291d34a38c9665414f330;hb=29d7092252a10c11ac137e38c871e301e26a8c11;hpb=b20a8a01c7faea5bcc9d34d10dcf7736589021b8 diff --git a/libubus-io.c b/libubus-io.c index 78943bc..19e3c2f 100644 --- a/libubus-io.c +++ b/libubus-io.c @@ -152,13 +152,15 @@ static int recv_retry(int fd, struct iovec *iov, bool wait) static bool ubus_validate_hdr(struct ubus_msghdr *hdr) { + struct blob_attr *data = ubus_msghdr_data(hdr); + if (hdr->version != 0) return false; - if (blob_raw_len(hdr->data) < sizeof(*hdr->data)) + if (blob_raw_len(data) < sizeof(*data)) return false; - if (blob_pad_len(hdr->data) > UBUS_MAX_MSGLEN) + if (blob_pad_len(data) > UBUS_MAX_MSGLEN) return false; return true; @@ -179,7 +181,7 @@ static bool get_next_msg(struct ubus_context *ctx) return false; } - iov.iov_len = blob_len(ctx->msgbuf.hdr.data); + iov.iov_len = blob_len(ubus_msghdr_data(&ctx->msgbuf.hdr)); if (iov.iov_len > 0 && !recv_retry(ctx->sock.fd, &iov, true)) return false;