mirror of
https://github.com/json-c/json-c.git
synced 2026-03-28 17:39:07 +08:00
json_pointer: move array out-of-bounds check outside of is_valid_index()
The out-of-bounds check is useful when trying to index/obtain a value from
an array.
However, when we set a value to a specific JSON pointer, we can allow
values that are outside the length of the current array.
The RFC6901 doc isn't clear on that aspect, and doing so is a bit more
in-line with how json_object_array_{put,insert}_idx() functions behave.
This changes the behavior of json_pointer_set{f}() because now a value can
be set anywhere in the array.
Also, added a test-case for this behavior change.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
This commit is contained in:
committed by
Eric Hawicz
parent
5a46a3b76d
commit
1c38dea651
@@ -269,6 +269,22 @@ static void test_example_set(void)
|
||||
printf("%s\n", json_object_get_string(jo1));
|
||||
|
||||
json_object_put(jo1);
|
||||
|
||||
jo1 = json_tokener_parse("[0, 1, 2, 3]");
|
||||
jo2 = json_tokener_parse("[0, 1, 2, 3, null, null, null, 7]");
|
||||
|
||||
assert(0 == json_pointer_set(&jo1, "/7", json_object_new_int(7)));
|
||||
assert(1 == json_object_equal(jo1, jo2));
|
||||
|
||||
json_object_put(jo1);
|
||||
|
||||
jo1 = json_tokener_parse("[0, 1, 2, 3]");
|
||||
|
||||
assert(0 == json_pointer_setf(&jo1, json_object_new_int(7), "/%u", 7));
|
||||
assert(1 == json_object_equal(jo1, jo2));
|
||||
|
||||
json_object_put(jo1);
|
||||
json_object_put(jo2);
|
||||
}
|
||||
|
||||
static void test_wrong_inputs_set(void)
|
||||
|
||||
Reference in New Issue
Block a user