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/29 14:22:58 UTC
svn commit: r738853 - in /ant/core/trunk: ./ src/main/org/apache/tools/zip/
src/tests/antunit/taskdefs/ src/tests/antunit/taskdefs/zip/
Author: bodewig
Date: Thu Jan 29 13:22:58 2009
New Revision: 738853
URL: http://svn.apache.org/viewvc?rev=738853&view=rev
Log:
Make sure ZIP archive is closed even when a RuntimeExpection occurs. PR 46559
Added:
ant/core/trunk/src/tests/antunit/taskdefs/zip/
ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-42940.zip (with props)
ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-46559.zip (with props)
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/src/main/org/apache/tools/zip/ZipFile.java
ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml
Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=738853&r1=738852&r2=738853&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Thu Jan 29 13:22:58 2009
@@ -331,6 +331,11 @@
* <sort> resource collection kept only one of entries deemed equal by
the chosen Comparator. Bugzilla report 46527.
+ * the ZipFile class used by <unzip> and others could leave the
+ archive open (making it undeletable on Windows as long as the java
+ VM was running) for files with an unexpected internal structure.
+ Bugzilla Report 46559.
+
Other changes:
--------------
Modified: ant/core/trunk/src/main/org/apache/tools/zip/ZipFile.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/zip/ZipFile.java?rev=738853&r1=738852&r2=738853&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/zip/ZipFile.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/zip/ZipFile.java Thu Jan 29 13:22:58 2009
@@ -150,16 +150,19 @@
public ZipFile(File f, String encoding) throws IOException {
this.encoding = encoding;
archive = new RandomAccessFile(f, "r");
+ boolean success = false;
try {
populateFromCentralDirectory();
resolveLocalFileHeaderData();
- } catch (IOException e) {
- try {
- archive.close();
- } catch (IOException e2) {
- // swallow, throw the original exception instead
+ success = true;
+ } finally {
+ if (!success) {
+ try {
+ archive.close();
+ } catch (IOException e2) {
+ // swallow, throw the original exception instead
+ }
}
- throw e;
}
}
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=738853&r1=738852&r2=738853&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/unzip-test.xml Thu Jan 29 13:22:58 2009
@@ -43,4 +43,18 @@
dest="${output}"/>
<au:assertFileExists file="${output}/foo/file"/>
</target>
+
+ <target name="testArchiveIsClosedForInvalidZips"
+ description="https://issues.apache.org/bugzilla/show_bug.cgi?id=46559"
+ >
+ <mkdir dir="${input}"/>
+ <mkdir dir="${output}"/>
+ <copy file="zip/Bugzilla-46559.zip" tofile="${input}/test.zip"/>
+ <au:expectfailure>
+ <unzip src="${input}/test.zip" dest="${output}"/>
+ </au:expectfailure>
+ <delete file="${input}/test.zip" quiet="true"/>
+ <!-- failed on Windows and other OSes with implicit file locking -->
+ <au:assertFileDoesntExist file="${input}/test.zip"/>
+ </target>
</project>
Added: ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-42940.zip
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-42940.zip?rev=738853&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-42940.zip
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: 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=738853&view=auto
==============================================================================
Files ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-46559.zip (added) and ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-46559.zip Thu Jan 29 13:22:58 2009 differ
Propchange: ant/core/trunk/src/tests/antunit/taskdefs/zip/Bugzilla-46559.zip
------------------------------------------------------------------------------
svn:mergeinfo =