소스 검색

Merge pull request #251 from bobkocisko/master

json patch: adding to a subfield of a non-object now fails as expected
Max Bruckner 7 년 전
부모
커밋
8abf110750
2개의 변경된 파일14개의 추가작업 그리고 1개의 파일을 삭제
  1. 6 0
      cJSON_Utils.c
  2. 8 1
      tests/json-patch-tests/cjson-utils-tests.json

+ 6 - 0
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)

+ 8 - 1
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"
+    } 
 ]