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,

Reply via email to