blobmsg: add blobmsg_check_attr_list() to validate element types of arrays and tables
This commit is contained in:
parent
63bc6593c3
commit
f1494cde4d
2 changed files with 17 additions and 0 deletions
16
blobmsg.c
16
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]);
|
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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue