Author: bodewig Date: Sun May 26 17:36:35 2013 New Revision: 1486437 URL: http://svn.apache.org/r1486437 Log: COMPRESS-228 be more lenient when parsing zip64 extra field
Added: commons/proper/compress/trunk/src/test/resources/COMPRESS-228.zip (with props) Modified: commons/proper/compress/trunk/src/changes/changes.xml commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java Modified: commons/proper/compress/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/changes/changes.xml?rev=1486437&r1=1486436&r2=1486437&view=diff ============================================================================== --- commons/proper/compress/trunk/src/changes/changes.xml (original) +++ commons/proper/compress/trunk/src/changes/changes.xml Sun May 26 17:36:35 2013 @@ -49,6 +49,11 @@ The <action> type attribute can be add,u TarBuffer.tryToConsumeSecondEOFRecord could throw a NullPointerException </action> + <action type="fix" date="2013-05-26" issue="COMPRESS-228"> + Parsing of zip64 extra fields has become more lenient in order + to be able to read archives created by DotNetZip and maybe + other archivers as well. + </action> </release> <release version="1.5" date="2013-03-14" description="Release 1.5"> Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java?rev=1486437&r1=1486436&r2=1486437&view=diff ============================================================================== --- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java (original) +++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java Sun May 26 17:36:35 2013 @@ -242,7 +242,7 @@ public class Zip64ExtendedInformationExt * field with knowledge which fields are expected to be there. * * <p>All four fields inside the zip64 extended information extra - * field are optional and only present if their corresponding + * field are optional and must only be present if their corresponding * entry inside the central directory contains the correct magic * value.</p> */ @@ -256,7 +256,7 @@ public class Zip64ExtendedInformationExt + (hasCompressedSize ? DWORD : 0) + (hasRelativeHeaderOffset ? DWORD : 0) + (hasDiskStart ? WORD : 0); - if (rawCentralDirectoryData.length != expectedLength) { + if (rawCentralDirectoryData.length < expectedLength) { throw new ZipException("central directory zip64 extended" + " information extra field's length" + " doesn't match central directory" Modified: commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java?rev=1486437&r1=1486436&r2=1486437&view=diff ============================================================================== --- commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java (original) +++ commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java Sun May 26 17:36:35 2013 @@ -226,6 +226,18 @@ public class ZipFileTest extends TestCas assertEquals(2, numberOfEntries); } + /** + * @see https://issues.apache.org/jira/browse/COMPRESS-228 + */ + public void testExcessDataInZip64ExtraField() throws Exception { + File archive = getFile("COMPRESS-228.zip"); + zf = new ZipFile(archive); + // actually, if we get here, the test already has passed + + ZipArchiveEntry ze = zf.getEntry("src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java"); + assertEquals(26101, ze.getSize()); + } + /* * ordertest.zip has been handcrafted. * Added: commons/proper/compress/trunk/src/test/resources/COMPRESS-228.zip URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/resources/COMPRESS-228.zip?rev=1486437&view=auto ============================================================================== Binary file - no diff available. Propchange: commons/proper/compress/trunk/src/test/resources/COMPRESS-228.zip ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream