You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2009/01/30 16:00:23 UTC

svn commit: r739300 - in /ant/core/trunk: ./ src/main/org/apache/tools/zip/ src/tests/antunit/taskdefs/ src/tests/antunit/taskdefs/zip/ src/tests/junit/org/apache/tools/zip/

Author: bodewig
Date: Fri Jan 30 15:00:21 2009
New Revision: 739300

URL: http://svn.apache.org/viewvc?rev=739300&view=rev
Log:
Ignore ZIP extra fields that don't contain the recommended header+length structure - this is what unzip does as well.  PR 42940

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/src/main/org/apache/tools/zip/ExtraFieldUtils.java
    ant/core/trunk/src/main/org/apache/tools/zip/ZipEntry.java
    ant/core/trunk/src/main/org/apache/tools/zip/ZipExtraField.java
    ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml
    ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-46559.zip
    ant/core/trunk/src/tests/junit/org/apache/tools/zip/ExtraFieldUtilsTest.java

Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=739300&r1=739299&r2=739300&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Fri Jan 30 15:00:21 2009
@@ -670,6 +670,10 @@
    processor.
    Bugzilla Issue 46612.
 
+ * the ZIP library will now ignore ZIP extra fields that don't specify
+   a size.
+   Bugzilla Report 42940.
+
 Changes from Ant 1.7.0 TO Ant 1.7.1
 =============================================
 

Modified: ant/core/trunk/src/main/org/apache/tools/zip/ExtraFieldUtils.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/zip/ExtraFieldUtils.java?rev=739300&r1=739299&r2=739300&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/zip/ExtraFieldUtils.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/zip/ExtraFieldUtils.java Fri Jan 30 15:00:21 2009
@@ -117,10 +117,6 @@
             }
             start += (length + WORD);
         }
-        if (start != data.length) { // array not exhausted
-            throw new ZipException("data starting at " + start
-                + " is in unknown format");
-        }
 
         ZipExtraField[] result = new ZipExtraField[v.size()];
         return (ZipExtraField[]) v.toArray(result);

Modified: ant/core/trunk/src/main/org/apache/tools/zip/ZipEntry.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/zip/ZipEntry.java?rev=739300&r1=739299&r2=739300&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/zip/ZipEntry.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/zip/ZipEntry.java Fri Jan 30 15:00:21 2009
@@ -252,7 +252,7 @@
         try {
             setExtraFields(ExtraFieldUtils.parse(extra));
         } catch (Exception e) {
-            throw new RuntimeException(e.getMessage());
+            throw new RuntimeException(e.getMessage(), e);
         }
     }
 

Modified: ant/core/trunk/src/main/org/apache/tools/zip/ZipExtraField.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/zip/ZipExtraField.java?rev=739300&r1=739299&r2=739300&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/zip/ZipExtraField.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/zip/ZipExtraField.java Fri Jan 30 15:00:21 2009
@@ -64,7 +64,7 @@
     byte[] getLocalFileDataData();
 
     /**
-     * The actual data to put central directory - without Header-ID or
+     * The actual data to put into central directory - without Header-ID or
      * length specifier.
      * @return the data
      * @since 1.1

Modified: ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml?rev=739300&r1=739299&r2=739300&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml Fri Jan 30 15:00:21 2009
@@ -44,6 +44,16 @@
     <au:assertFileExists file="${output}/foo/file"/>
   </target>
 
+  <target name="testTwoByteExtraFieldInLFH"
+          description="https://issues.apache.org/bugzilla/show_bug.cgi?id=42940"
+          >
+    <mkdir dir="${input}"/>
+    <mkdir dir="${output}"/>
+    <copy file="zip/Bugzilla-42940.zip" tofile="${input}/test.zip"/>
+    <unzip src="${input}/test.zip" dest="${output}"/>
+    <au:assertFileExists file="${output}/META-INF/MANIFEST.MF"/>
+  </target>
+
   <target name="testArchiveIsClosedForInvalidZips"
           description="https://issues.apache.org/bugzilla/show_bug.cgi?id=46559"
           >

Modified: ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-46559.zip
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-46559.zip?rev=739300&r1=739299&r2=739300&view=diff
==============================================================================
Binary files - no diff available.

Modified: ant/core/trunk/src/tests/junit/org/apache/tools/zip/ExtraFieldUtilsTest.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/junit/org/apache/tools/zip/ExtraFieldUtilsTest.java?rev=739300&r1=739299&r2=739300&view=diff
==============================================================================
--- ant/core/trunk/src/tests/junit/org/apache/tools/zip/ExtraFieldUtilsTest.java (original)
+++ ant/core/trunk/src/tests/junit/org/apache/tools/zip/ExtraFieldUtilsTest.java Fri Jan 30 15:00:21 2009
@@ -40,7 +40,7 @@
         a.setDirectory(true);
         dummy = new UnrecognizedExtraField();
         dummy.setHeaderId(new ZipShort(1));
-        dummy.setLocalFileDataData(new byte[0]);
+        dummy.setLocalFileDataData(new byte[] {0});
         dummy.setCentralDirectoryData(new byte[] {0});
 
         aLocal = a.getLocalFileDataData();
@@ -68,7 +68,7 @@
         assertEquals("mode field 1", 040755,
                      ((AsiExtraField) ze[0]).getMode());
         assertTrue("type field 2", ze[1] instanceof UnrecognizedExtraField);
-        assertEquals("data length field 2", 0,
+        assertEquals("data length field 2", 1,
                      ze[1].getLocalFileDataLength().getValue());
 
         byte[] data2 = new byte[data.length-1];