From b8f71d365927416c7f453f5d5e969a51a6073c4b Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 16 Aug 2015 19:44:16 -0700 Subject: [PATCH] Fix assert fail when delpaths is given non-array (fix #901) --- jv_aux.c | 5 +++++ tests/jq.test | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/jv_aux.c b/jv_aux.c index b38cf49e..4d48f577 100644 --- a/jv_aux.c +++ b/jv_aux.c @@ -390,6 +390,11 @@ static jv delpaths_sorted(jv object, jv paths, int start) { } jv jv_delpaths(jv object, jv paths) { + if (jv_get_kind(paths) != JV_KIND_ARRAY) { + jv_free(object); + jv_free(paths); + return jv_invalid_with_msg(jv_string("Paths must be specified as an array")); + } paths = jv_sort(paths, jv_copy(paths)); jv_array_foreach(paths, i, elem) { if (jv_get_kind(elem) != JV_KIND_ARRAY) { diff --git a/tests/jq.test b/tests/jq.test index 07d81ee8..021253d8 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -756,6 +756,10 @@ delpaths([[-200]]) [1,2,3] [1,2,3] +try delpaths(0) catch . +{} +"Paths must be specified as an array" + del(.), del(empty), del((.foo,.bar,.baz) | .[2,3,0]), del(.foo[0], .bar[0], .foo, .baz.bar[0].x) {"foo": [0,1,2,3,4], "bar": [0,1]} null