Repository: commons-compress Updated Branches: refs/heads/master fe5ffa67b -> 9f468f199
[COMPRESS-362] Bullet-proof code using try-with-resources statements Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/9f468f19 Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/9f468f19 Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/9f468f19 Branch: refs/heads/master Commit: 9f468f199b2309c15efca530357d5222359d51e1 Parents: fe5ffa6 Author: Gary Gregory <ggreg...@apache.org> Authored: Thu Dec 8 23:15:34 2016 -0800 Committer: Gary Gregory <ggreg...@apache.org> Committed: Thu Dec 8 23:15:34 2016 -0800 ---------------------------------------------------------------------- .../archivers/arj/ArjArchiveInputStream.java | 86 ++++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-compress/blob/9f468f19/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java index 1a4b212..eb6f070 100644 --- a/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java @@ -216,54 +216,54 @@ public class ArjArchiveInputStream extends ArchiveInputStream { if (basicHeaderBytes == null) { return null; } - final DataInputStream basicHeader = new DataInputStream( - new ByteArrayInputStream(basicHeaderBytes)); - - final int firstHeaderSize = basicHeader.readUnsignedByte(); - final byte[] firstHeaderBytes = new byte[firstHeaderSize - 1]; - basicHeader.readFully(firstHeaderBytes); - final DataInputStream firstHeader = new DataInputStream( - new ByteArrayInputStream(firstHeaderBytes)); + try (final DataInputStream basicHeader = new DataInputStream(new ByteArrayInputStream(basicHeaderBytes))) { - final LocalFileHeader localFileHeader = new LocalFileHeader(); - localFileHeader.archiverVersionNumber = firstHeader.readUnsignedByte(); - localFileHeader.minVersionToExtract = firstHeader.readUnsignedByte(); - localFileHeader.hostOS = firstHeader.readUnsignedByte(); - localFileHeader.arjFlags = firstHeader.readUnsignedByte(); - localFileHeader.method = firstHeader.readUnsignedByte(); - localFileHeader.fileType = firstHeader.readUnsignedByte(); - localFileHeader.reserved = firstHeader.readUnsignedByte(); - localFileHeader.dateTimeModified = read32(firstHeader); - localFileHeader.compressedSize = 0xffffFFFFL & read32(firstHeader); - localFileHeader.originalSize = 0xffffFFFFL & read32(firstHeader); - localFileHeader.originalCrc32 = 0xffffFFFFL & read32(firstHeader); - localFileHeader.fileSpecPosition = read16(firstHeader); - localFileHeader.fileAccessMode = read16(firstHeader); - pushedBackBytes(20); - localFileHeader.firstChapter = firstHeader.readUnsignedByte(); - localFileHeader.lastChapter = firstHeader.readUnsignedByte(); - - readExtraData(firstHeaderSize, firstHeader, localFileHeader); + final int firstHeaderSize = basicHeader.readUnsignedByte(); + final byte[] firstHeaderBytes = new byte[firstHeaderSize - 1]; + basicHeader.readFully(firstHeaderBytes); + try (final DataInputStream firstHeader = new DataInputStream(new ByteArrayInputStream(firstHeaderBytes))) { - localFileHeader.name = readString(basicHeader); - localFileHeader.comment = readString(basicHeader); + final LocalFileHeader localFileHeader = new LocalFileHeader(); + localFileHeader.archiverVersionNumber = firstHeader.readUnsignedByte(); + localFileHeader.minVersionToExtract = firstHeader.readUnsignedByte(); + localFileHeader.hostOS = firstHeader.readUnsignedByte(); + localFileHeader.arjFlags = firstHeader.readUnsignedByte(); + localFileHeader.method = firstHeader.readUnsignedByte(); + localFileHeader.fileType = firstHeader.readUnsignedByte(); + localFileHeader.reserved = firstHeader.readUnsignedByte(); + localFileHeader.dateTimeModified = read32(firstHeader); + localFileHeader.compressedSize = 0xffffFFFFL & read32(firstHeader); + localFileHeader.originalSize = 0xffffFFFFL & read32(firstHeader); + localFileHeader.originalCrc32 = 0xffffFFFFL & read32(firstHeader); + localFileHeader.fileSpecPosition = read16(firstHeader); + localFileHeader.fileAccessMode = read16(firstHeader); + pushedBackBytes(20); + localFileHeader.firstChapter = firstHeader.readUnsignedByte(); + localFileHeader.lastChapter = firstHeader.readUnsignedByte(); - final ArrayList<byte[]> extendedHeaders = new ArrayList<>(); - int extendedHeaderSize; - while ((extendedHeaderSize = read16(in)) > 0) { - final byte[] extendedHeaderBytes = new byte[extendedHeaderSize]; - readFully(in, extendedHeaderBytes); - final long extendedHeaderCrc32 = 0xffffFFFFL & read32(in); - final CRC32 crc32 = new CRC32(); - crc32.update(extendedHeaderBytes); - if (extendedHeaderCrc32 != crc32.getValue()) { - throw new IOException("Extended header CRC32 verification failure"); + readExtraData(firstHeaderSize, firstHeader, localFileHeader); + + localFileHeader.name = readString(basicHeader); + localFileHeader.comment = readString(basicHeader); + + final ArrayList<byte[]> extendedHeaders = new ArrayList<>(); + int extendedHeaderSize; + while ((extendedHeaderSize = read16(in)) > 0) { + final byte[] extendedHeaderBytes = new byte[extendedHeaderSize]; + readFully(in, extendedHeaderBytes); + final long extendedHeaderCrc32 = 0xffffFFFFL & read32(in); + final CRC32 crc32 = new CRC32(); + crc32.update(extendedHeaderBytes); + if (extendedHeaderCrc32 != crc32.getValue()) { + throw new IOException("Extended header CRC32 verification failure"); + } + extendedHeaders.add(extendedHeaderBytes); + } + localFileHeader.extendedHeaders = extendedHeaders.toArray(new byte[extendedHeaders.size()][]); + + return localFileHeader; } - extendedHeaders.add(extendedHeaderBytes); } - localFileHeader.extendedHeaders = extendedHeaders.toArray(new byte[extendedHeaders.size()][]); - - return localFileHeader; } private void readExtraData(final int firstHeaderSize, final DataInputStream firstHeader,