summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-06-30 18:40:38 +0200
committerFelix Fietkau <nbd@openwrt.org>2014-06-30 18:40:38 +0200
commit7cb94b9e3f669a62272d07747d346f5393d71c1d (patch)
treeb2c7708a50ae87c8eb05126eb8321306ebab510b
parentb99104d3ab99077cdce312e1c0a8e605844b525c (diff)
downloadfirewall3-7cb94b9e3f669a62272d07747d346f5393d71c1d.tar.gz
ubus: use blobmsg_parse to validate data from network.interface:dump
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-rw-r--r--ubus.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ubus.c b/ubus.c
index ec6d84f..f5fd8c4 100644
--- a/ubus.c
+++ b/ubus.c
@@ -23,11 +23,12 @@ static struct blob_attr *interfaces = NULL;
static void dump_cb(struct ubus_request *req, int type, struct blob_attr *msg)
{
+ static const struct blobmsg_policy policy = { "interface", BLOBMSG_TYPE_ARRAY };
struct blob_attr *cur;
- unsigned rem = blob_len(msg);
- __blob_for_each_attr(cur, blob_data(msg), rem)
- if (!strcmp(blobmsg_name(cur), "interface"))
- interfaces = blob_memdup(cur);
+
+ blobmsg_parse(&policy, 1, &cur, blob_data(msg), blob_len(msg));
+ if (cur)
+ interfaces = blob_memdup(cur);
}
bool