This is an automated email from the ASF dual-hosted git repository. bodewig pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-compress.git
The following commit(s) were added to refs/heads/master by this push: new f8a4a3e simplify readEncodedHeader a bit f8a4a3e is described below commit f8a4a3ef5c455e80a25d6d6e00904ae9a54546b2 Author: Stefan Bodewig <bode...@apache.org> AuthorDate: Sat May 22 16:48:40 2021 +0200 simplify readEncodedHeader a bit --- .../commons/compress/archivers/sevenz/SevenZFile.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java index b0b5abf..0fe9da9 100644 --- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java +++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java @@ -671,10 +671,10 @@ public class SevenZFile implements Closeable { readStreamsInfo(header, archive); - if (archive.folders.length == 0) { + if (archive.folders == null || archive.folders.length == 0) { throw new IOException("no folders, can't read encoded header"); } - if (archive.packSizes.length == 0) { + if (archive.packSizes == null || archive.packSizes.length == 0) { throw new IOException("no packed streams, can't read encoded header"); } @@ -698,11 +698,12 @@ public class SevenZFile implements Closeable { inputStreamStack = new CRC32VerifyingInputStream(inputStreamStack, folder.getUnpackSize(), folder.crc); } - assertFitsIntoNonNegativeInt("unpackSize", folder.getUnpackSize()); - final byte[] nextHeader = new byte[(int)folder.getUnpackSize()]; - try (DataInputStream nextHeaderInputStream = new DataInputStream(inputStreamStack)) { - nextHeaderInputStream.readFully(nextHeader); + final int unpackSize = assertFitsIntoNonNegativeInt("unpackSize", folder.getUnpackSize()); + final byte[] nextHeader = new byte[unpackSize]; + if (IOUtils.readFully(inputStreamStack, nextHeader) < unpackSize) { + throw new IOException("premature end of stream"); } + inputStreamStack.close(); return ByteBuffer.wrap(nextHeader).order(ByteOrder.LITTLE_ENDIAN); }