From d26a42af8d9af7931c0e47055240a768a6e4139f Mon Sep 17 00:00:00 2001 From: Bob Kocisko Date: Tue, 20 Mar 2018 12:58:25 -0400 Subject: [PATCH] json patch: adding to a subfield of a non-object now fails as expected --- cJSON_Utils.c | 6 ++++++ tests/json-patch-tests/cjson-utils-tests.json | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cJSON_Utils.c b/cJSON_Utils.c index b83cfcd..0d199f8 100644 --- a/cJSON_Utils.c +++ b/cJSON_Utils.c @@ -988,6 +988,12 @@ static int apply_patch(cJSON *object, const cJSON *patch, const cJSON_bool case_ cJSON_AddItemToObject(parent, (char*)child_pointer, value); value = NULL; } + else /* parent is not an object */ + { + /* Couldn't find object to add to. */ + status = 9; + goto cleanup; + } cleanup: if (value != NULL) diff --git a/tests/json-patch-tests/cjson-utils-tests.json b/tests/json-patch-tests/cjson-utils-tests.json index 8037773..28a5e30 100644 --- a/tests/json-patch-tests/cjson-utils-tests.json +++ b/tests/json-patch-tests/cjson-utils-tests.json @@ -80,5 +80,12 @@ "doc": { "foo": ["bar"] }, "patch": [ { "op": "add", "path": "/foo/-", "value": ["abc", "def"] }], "expected": {"foo": ["bar", ["abc", "def"]] } - } + }, + + { + "comment": "15", + "doc": {"foo": {"bar": 1}}, + "patch": [{"op": "add", "path": "/foo/bar/baz", "value": "5"}], + "error": "attempting to add to subfield of non-object" + } ]