This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch STABLE-4.2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit ca04d2bd2d49d338b701dbf3005c8b34372ed508 Author: Mikhail Dzianishchyts <[email protected]> AuthorDate: Tue Jan 17 11:22:45 2023 +0300 CAY-2789 MalformedJsonException thrown when reading manually edited JSON data in Postgres (cherry picked from commit 6634ecba37d0a7dd07eeff7643b03a5207b93951) --- .../main/java/org/apache/cayenne/value/json/JsonTokenizer.java | 3 +++ .../java/org/apache/cayenne/value/json/JsonTokenizerTest.java | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java b/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java index 14f415240..9ab9ec46e 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java @@ -52,6 +52,9 @@ final class JsonTokenizer { while (position < data.length) { // skip whitespace skipWhitespace(); + if (position == data.length) { + break; + } JsonToken token = nextValue(); // only string could be used as an object member name if (states[currentState] == State.OBJECT_MEMBER_NAME) { diff --git a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java index daea7cb05..c64d01415 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java @@ -28,6 +28,16 @@ import static org.junit.Assert.assertEquals; */ public class JsonTokenizerTest { + @Test + public void testEmpty() { + JsonTokenizer tokenizer; + JsonTokenizer.JsonToken token; + + tokenizer = new JsonTokenizer(""); + token = tokenizer.nextToken(); + assertEquals(JsonTokenizer.TokenType.NONE, token.type); + } + @Test public void testNull() { JsonTokenizer tokenizer;
