8 static void fuzz_blobmsg_parse(const uint8_t *data
, size_t size
)
17 static const struct blobmsg_policy foo_policy
[] = {
20 .type
= BLOBMSG_TYPE_STRING
,
24 .type
= BLOBMSG_TYPE_ARRAY
,
28 .type
= BLOBMSG_TYPE_TABLE
,
32 struct blob_attr
*tb
[__FOO_MAX
];
34 blobmsg_parse(foo_policy
, __FOO_MAX
, tb
, (uint8_t *)data
, size
);
35 blobmsg_parse_array(foo_policy
, __FOO_MAX
, tb
, (uint8_t *)data
, size
);
38 static void fuzz_blob_parse(const uint8_t *data
, size_t size
)
53 static const struct blob_attr_info foo_policy
[__FOO_ATTR_MAX
] = {
54 [FOO_ATTR_NESTED
] = { .type
= BLOB_ATTR_NESTED
},
55 [FOO_ATTR_BINARY
] = { .type
= BLOB_ATTR_BINARY
},
56 [FOO_ATTR_STRING
] = { .type
= BLOB_ATTR_STRING
},
57 [FOO_ATTR_INT8
] = { .type
= BLOB_ATTR_INT8
},
58 [FOO_ATTR_INT16
] = { .type
= BLOB_ATTR_INT16
},
59 [FOO_ATTR_INT32
] = { .type
= BLOB_ATTR_INT32
},
60 [FOO_ATTR_INT64
] = { .type
= BLOB_ATTR_INT64
},
61 [FOO_ATTR_DOUBLE
] = { .type
= BLOB_ATTR_DOUBLE
},
64 struct blob_attr
*foo
[__FOO_ATTR_MAX
];
65 struct blob_attr
*buf
= (struct blob_attr
*)data
;
67 blob_parse_untrusted(buf
, size
, foo
, foo_policy
, __FOO_ATTR_MAX
);
70 int LLVMFuzzerTestOneInput(const uint8_t *data
, size_t size
)
72 fuzz_blob_parse(data
, size
);
73 fuzz_blobmsg_parse(data
, size
);