You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by sa...@apache.org on 2015/07/27 23:59:36 UTC

incubator-johnzon git commit: Improved handling of trailing garbage

Repository: incubator-johnzon
Updated Branches:
  refs/heads/master 7de3d8433 -> 1ea4fd8c3


Improved handling of trailing garbage


Project: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/commit/1ea4fd8c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/tree/1ea4fd8c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/diff/1ea4fd8c

Branch: refs/heads/master
Commit: 1ea4fd8c3d894cbe8398e5808414cfd2d2eaa992
Parents: 7de3d84
Author: Hendrik Saly <he...@gmail.com>
Authored: Mon Jul 27 23:59:09 2015 +0200
Committer: Hendrik Saly <he...@gmail.com>
Committed: Mon Jul 27 23:59:09 2015 +0200

----------------------------------------------------------------------
 .../johnzon/core/JsonStreamParserImpl.java      |  2 +-
 .../org/apache/johnzon/core/JsonParserTest.java | 77 +++++++++++++++++++-
 2 files changed, 77 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/1ea4fd8c/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java
index 3778b3b..e72ca7b 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java
@@ -185,7 +185,7 @@ public class JsonStreamParserImpl implements JsonChars, JsonParser{
         }
 
         //detect garbage at the end of the file after last object or array is closed
-        if (bufferPos < availableCharsInBuffer - 2) {
+        if (bufferPos < availableCharsInBuffer) {
 
             final char c = readNextNonWhitespaceChar(readNextChar());
 

http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/1ea4fd8c/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
index 87146f2..dc6326f 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
@@ -1636,7 +1636,82 @@ public class JsonParserTest {
             
         }
     }
-    
+
+    @Test(expected=JsonParsingException.class)
+    public void rfc7159MustFailForLiteral() {
+        Json.createReader(new ByteArrayInputStream("null ".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void rfc7159MustFailForString() {
+        Json.createReader(new ByteArrayInputStream("\"hello\"".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void rfc7159MustFailForNumber() {
+        Json.createReader(new ByteArrayInputStream("  12  ".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void arrayFollowedByGarbage() {
+        Json.createReader(new ByteArrayInputStream("[12],".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void arrayFollowedByGarbage1() {
+        Json.createReader(new ByteArrayInputStream("[12]:".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void arrayFollowedByGarbage2() {
+        Json.createReader(new ByteArrayInputStream("[12]:,".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2},".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage1() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2}:".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage2() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2},:".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage3() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2}-".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage4() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2}------------".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage5() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2}{\"a\":2}".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage6() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2}\"".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectFollowedByGarbage7() {
+        Json.createReader(new ByteArrayInputStream("{\"a\":2} \"".getBytes())).read();
+    }
+
+    @Test(expected=JsonParsingException.class)
+    public void objectPrependedByGarbage7() {
+        Json.createReader(new ByteArrayInputStream("-{\"a\":2}".getBytes())).read();
+    }
+
     class AttemptingInputStream extends ByteArrayInputStream {
 
         public AttemptingInputStream(byte[] buf) {