From 67ded4c2fd15d50044fde7dcb13722e3f9f12a8f Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Thu, 6 Jan 2022 14:52:57 -0800 Subject: [PATCH] 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. --- src/json.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/json.c b/src/json.c index 0942dae3..69c1dcdb 100644 --- a/src/json.c +++ b/src/json.c @@ -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