From 2660b04a731568c54eb4b91fe811d81cbbf3470b Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Fri, 8 Feb 2019 20:39:36 -0600 Subject: Fix infinite loop in index("") (fix #1815) --- src/jv.c | 2 ++ tests/jq.test | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/jv.c b/src/jv.c index f051d730..b3fcd5e3 100644 --- a/src/jv.c +++ b/src/jv.c @@ -658,6 +658,8 @@ jv jv_string_indexes(jv j, jv k) { int idxlen = jv_string_length_bytes(jv_copy(k)); jv a = jv_array(); + if (idxlen == 0) + return a; p = jstr; while ((p = _jq_memmem(p, (jstr + jlen) - p, idxstr, idxlen)) != NULL) { a = jv_array_append(a, jv_number(p - jstr)); diff --git a/tests/jq.test b/tests/jq.test index 6ee657b6..1572043e 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -1538,4 +1538,9 @@ isempty(1,error("foo")) null false +# Regression test for #1815 +index("") +"" +null + -- cgit v1.2.3