Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.openwrt.org/project/libubox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-06-24 23:07:47 +0400
committerFelix Fietkau <nbd@openwrt.org>2012-06-24 23:07:47 +0400
commitf1494cde4d22f5df91d581ef7242e80b1cb367de (patch)
treee63019c7e255fdb2f032ead847eb62f661d6abaf /blobmsg.c
parent63bc6593c37b4757199fb65ec1fb607c5e5190e3 (diff)
blobmsg: add blobmsg_check_attr_list() to validate element types of arrays and tables
Diffstat (limited to 'blobmsg.c')
-rw-r--r--blobmsg.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/blobmsg.c b/blobmsg.c
index 61b6a08..12f603c 100644
--- a/blobmsg.c
+++ b/blobmsg.c
@@ -61,6 +61,22 @@ bool blobmsg_check_attr(const struct blob_attr *attr, bool name)
return blob_check_type(data, len, blob_type[id]);
}
+bool blobmsg_check_attr_list(const struct blob_attr *attr, int type, bool name)
+{
+ struct blob_attr *cur;
+ int rem;
+
+ blobmsg_for_each_attr(cur, attr, rem) {
+ if (blobmsg_type(cur) != type)
+ return false;
+
+ if (!blobmsg_check_attr(cur, name))
+ return false;
+ }
+
+ return true;
+}
+
int blobmsg_parse(const struct blobmsg_policy *policy, int policy_len,
struct blob_attr **tb, void *data, int len)
{