blobmsg: add blobmsg_check_attr_list() to validate element types of arrays and tables

This commit is contained in:
Felix Fietkau 2012-06-24 21:07:47 +02:00
parent 63bc6593c3
commit f1494cde4d
2 changed files with 17 additions and 0 deletions

View file

@ -61,6 +61,22 @@ bool blobmsg_check_attr(const struct blob_attr *attr, bool name)
return blob_check_type(data, len, blob_type[id]); 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, int blobmsg_parse(const struct blobmsg_policy *policy, int policy_len,
struct blob_attr **tb, void *data, int len) struct blob_attr **tb, void *data, int len)
{ {

View file

@ -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(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, int blobmsg_parse(const struct blobmsg_policy *policy, int policy_len,
struct blob_attr **tb, void *data, int len); struct blob_attr **tb, void *data, int len);