From 0b324ec7b8a8e4f269083e018930cd7189d96004 Mon Sep 17 00:00:00 2001 From: Bartlomiej Kowalczyk Date: Tue, 23 Jan 2018 22:04:50 +0100 Subject: [PATCH] Prevent StackOverflow in case of unclosed property --- .../java/com/jayway/jsonpath/internal/path/PathCompiler.java | 4 ++++ .../src/test/java/com/jayway/jsonpath/old/JsonPathTest.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java index 0317311e..b27eda61 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java @@ -603,6 +603,10 @@ public class PathCompiler { readPosition++; } + if (inProperty){ + fail("Property has not been closed - missing closing " + potentialStringDelimiter); + } + int endBracketIndex = path.indexOfNextSignificantChar(endPosition, CLOSE_SQUARE_BRACKET) + 1; path.setPosition(endBracketIndex); diff --git a/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java b/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java index 60304267..45ff46bf 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java @@ -322,5 +322,10 @@ public class JsonPathTest extends BaseTest { } } + @Test(expected = InvalidPathException.class) + //see https://github.com/json-path/JsonPath/issues/428 + public void prevent_stack_overflow_error_when_unclosed_property() { + JsonPath.compile("$['boo','foo][?(@ =~ /bar/)]"); + } }