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());
+ }
+ }
+
}