From 4a5b9010ccc56fdf288fe758023af445feb93fad Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 19 Mar 2021 17:33:46 +0100 Subject: value: fix accessing array indexes with non-numeric values Since libjson-c's json_object_get_int64() returns 0 for any input value that has no integer representation, any kind of invalid array index incorrectly yielded the first array element. Fix this issue by explicitly converting string values and by rejecting any other kind of value. Signed-off-by: Jo-Philipp Wich --- tests/03_bugs/09_reject_invalid_array_indexes | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tests/03_bugs/09_reject_invalid_array_indexes (limited to 'tests/03_bugs/09_reject_invalid_array_indexes') diff --git a/tests/03_bugs/09_reject_invalid_array_indexes b/tests/03_bugs/09_reject_invalid_array_indexes new file mode 100644 index 0000000..a7e5272 --- /dev/null +++ b/tests/03_bugs/09_reject_invalid_array_indexes @@ -0,0 +1,25 @@ +Since libjson-c's json_object_get_int64() returns 0 for any input value +that has no integer representation, any kind of invalid array index +incorrectly yielded the first array element. + +-- Testcase -- +{% + x = [1, 2, 3]; + + print([ + x[1], + x["1"], + x[1.0], + x[1.1], + x.foo, + x["foo"], + x["0abc"], + x[x], + x[{ foo: true }] + ], "\n"); +%} +-- End -- + +-- Expect stdout -- +[ 2, 2, 2, null, null, null, null, null, null ] +-- End -- -- cgit v1.2.3