diff --git a/src/main/java/org/codehaus/jettison/json/JSONTokener.java b/src/main/java/org/codehaus/jettison/json/JSONTokener.java index a35be88..2a1164c 100644 --- a/src/main/java/org/codehaus/jettison/json/JSONTokener.java +++ b/src/main/java/org/codehaus/jettison/json/JSONTokener.java @@ -192,7 +192,6 @@ public char nextClean() throws JSONException { if (next() == '/') { break; } - back(); } } break; diff --git a/src/test/java/org/codehaus/jettison/json/JSONArrayTest.java b/src/test/java/org/codehaus/jettison/json/JSONArrayTest.java index 2257a3d..cf14701 100644 --- a/src/test/java/org/codehaus/jettison/json/JSONArrayTest.java +++ b/src/test/java/org/codehaus/jettison/json/JSONArrayTest.java @@ -43,6 +43,24 @@ public void testEscapingInArrayIsTrunedOff() throws JSONException { String expectedValue = "[\"a string with / character\",{\"key\":\"http://example.com/foo\"}]"; assertEquals(expectedValue, array.toString()); } - - + + public void testInfiniteLoop() { + String str = "[*/*A25] **"; + try { + new JSONArray(str); + fail("Failure expected on malformed JSON"); + } catch (JSONException ex) { + // expected + } + } + + public void testInfiniteLoop2() { + String str = "[/"; + try { + new JSONArray(str); + fail("Failure expected on malformed JSON"); + } catch (JSONException ex) { + // expected + } + } }