json: restrict json_iter_{parse,next} to objects/arrays

json_iter_parse is only meant to work on objects while
json_iter_next is only meant to work on arrays.

This adds checks in both APIs to ensure they aren't being
used incorrectly.
This commit is contained in:
James Prestwood 2022-01-06 14:52:57 -08:00 committed by Denis Kenzior
parent 1f91c03bf6
commit 67ded4c2fd
1 changed files with 6 additions and 0 deletions

View File

@ -200,6 +200,9 @@ bool json_iter_parse(struct json_iter *iter, enum json_type type, ...)
if (iter->start == -1)
return false;
if (c->tokens[iter->start].type != JSMN_OBJECT)
return false;
args = l_queue_new();
va_start(va, type);
@ -427,6 +430,9 @@ bool json_iter_next(struct json_iter *iter)
jsmntok_t *t = c->tokens + iter->current;
int inc = 1;
if (c->tokens[iter->start].type != JSMN_ARRAY)
return false;
/*
* If this is the initial iteration skip this and just increment
* current by 1 since this iterator points to a container which needs to