You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2018/01/09 17:41:05 UTC

[12/28] commons-compress git commit: COMPRESS-380 document EOFException and add a test

COMPRESS-380 document EOFException and add a test


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/f4b75016
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/f4b75016
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/f4b75016

Branch: refs/heads/master
Commit: f4b750165bc27f6a36bc3abed650e18d474e296b
Parents: b97a02c
Author: Stefan Bodewig <bo...@apache.org>
Authored: Fri Jan 5 11:55:08 2018 +0100
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Fri Jan 5 11:55:08 2018 +0100

----------------------------------------------------------------------
 .../Deflate64CompressorInputStream.java         |  6 ++++
 .../compressors/deflate64/HuffmanDecoder.java   |  2 +-
 .../Deflate64CompressorInputStreamTest.java     | 31 ++++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f4b75016/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
index e909f13..88b2142 100644
--- a/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
@@ -44,6 +44,9 @@ public class Deflate64CompressorInputStream extends CompressorInputStream {
         this.decoder = decoder;
     }
 
+    /**
+     * @throws java.io.EOFException if the underlying stream is exhausted before the end of defalted data was reached.
+     */
     @Override
     public int read() throws IOException {
         byte[] b = new byte[1];
@@ -62,6 +65,9 @@ public class Deflate64CompressorInputStream extends CompressorInputStream {
         }
     }
 
+    /**
+     * @throws java.io.EOFException if the underlying stream is exhausted before the end of defalted data was reached.
+     */
     @Override
     public int read(byte[] b, int off, int len) throws IOException {
         int read = -1;

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f4b75016/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java b/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
index e96959c..04ec7f9 100644
--- a/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
+++ b/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
@@ -488,7 +488,7 @@ class HuffmanDecoder implements Closeable {
     private static long readBits(BitInputStream reader, int numBits) throws IOException {
         long r = reader.readBits(numBits);
         if (r == -1) {
-            throw new EOFException();
+            throw new EOFException("Truncated Deflate64 Stream");
         }
         return r;
     }

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f4b75016/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
index 0232b06..b7b3cd9 100644
--- a/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStreamTest.java
@@ -133,4 +133,35 @@ public class Deflate64CompressorInputStreamTest {
       }
    }
 
+   @Test
+   public void streamIgnoresExtraBytesAfterDeflatedInput() throws Exception
+   {
+      byte[] data = {
+         1, 11, 0, -12, -1,
+         'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', 'X'
+      };
+
+      try (Deflate64CompressorInputStream input = new Deflate64CompressorInputStream(new ByteArrayInputStream(data));
+           BufferedReader br = new BufferedReader(new InputStreamReader(input)))
+      {
+         assertEquals("Hello World", br.readLine());
+         assertEquals(null, br.readLine());
+      }
+   }
+
+   @Test(expected = java.io.EOFException.class)
+   public void throwsEOFExceptionOnTruncatedStreams() throws Exception
+   {
+      byte[] data = {
+         1, 11, 0, -12, -1,
+         'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l',
+      };
+
+      try (Deflate64CompressorInputStream input = new Deflate64CompressorInputStream(new ByteArrayInputStream(data));
+           BufferedReader br = new BufferedReader(new InputStreamReader(input)))
+      {
+         assertEquals("Hello World", br.readLine());
+      }
+   }
+
 }