From f1494cde4d22f5df91d581ef7242e80b1cb367de Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 24 Jun 2012 21:07:47 +0200 Subject: [PATCH 1/1] blobmsg: add blobmsg_check_attr_list() to validate element types of arrays and tables --- blobmsg.c | 16 ++++++++++++++++ blobmsg.h | 1 + 2 files changed, 17 insertions(+) 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) { diff --git a/blobmsg.h b/blobmsg.h index 61b5331..f504351 100644 --- a/blobmsg.h +++ b/blobmsg.h @@ -78,6 +78,7 @@ static inline int blobmsg_data_len(const struct blob_attr *attr) } bool blobmsg_check_attr(const struct blob_attr *attr, bool name); +bool blobmsg_check_attr_list(const struct blob_attr *attr, int type, bool name); int blobmsg_parse(const struct blobmsg_policy *policy, int policy_len, struct blob_attr **tb, void *data, int len); -- 2.11.0