diff --git a/mesh/mesh-db.c b/mesh/mesh-db.c
index 5b2868f..e0a0002 100644
--- a/mesh/mesh-db.c
+++ b/mesh/mesh-db.c
return true;
mod->bindings = l_new(uint16_t, cnt);
- if (!mod->bindings)
- return false;
for (i = 0; i < cnt; ++i) {
int idx;
return true;
subs = l_new(struct mesh_db_sub, cnt);
- if (!subs)
- return false;
for (i = 0; i < cnt; ++i) {
char *str;
{
int i, num_ele;
+ if (json_object_get_type(jelements) != json_type_array)
+ return false;
+
num_ele = json_object_array_length(jelements);
if (!num_ele)
/* Allow "empty" nodes */
return true;
node->elements = l_queue_new();
- if (!node->elements)
- return false;
for (i = 0; i < num_ele; ++i) {
json_object *jelement;
ele = l_new(struct mesh_db_element, 1);
ele->index = index;
ele->models = l_queue_new();
- if (!ele->models)
- goto fail;
if (!json_object_object_get_ex(jelement, "location", &jvalue))
goto fail;
if (json_object_object_get_ex(jnode, "sequenceNumber", &jvalue))
node.seq_number = json_object_get_int(jvalue);
- if (json_object_object_get_ex(jnode, "elements", &jvalue)) {
- if (json_object_get_type(jvalue) == json_type_array) {
- if (!parse_elements(jvalue, &node))
- return false;
- }
- }
+ /* Check for required "elements" property */
+ if (!json_object_object_get_ex(jnode, "elements", &jvalue))
+ return false;
+
+ if (!parse_elements(jvalue, &node))
+ return false;
return cb(&node, user_data);
}