git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@677575 13f79535-47bb-0310-9956-ffa450edef68master
@@ -267,6 +267,7 @@ Takashi Okamoto | |||||
Taoufik Romdhane | Taoufik Romdhane | ||||
Tariq Master | Tariq Master | ||||
Trejkaz Xaoza | Trejkaz Xaoza | ||||
Thomas Aglassinger | |||||
Thomas Butz | Thomas Butz | ||||
Thomas Christen | Thomas Christen | ||||
Thomas Christensen | Thomas Christensen | ||||
@@ -58,6 +58,9 @@ Changes that could break older environments: | |||||
passed in a null or empty InputStream to read from. | passed in a null or empty InputStream to read from. | ||||
Bugzilla Report 32200 | Bugzilla Report 32200 | ||||
* <unzip> will now fail on archives with an empty central directory. | |||||
Bugzilla report 35000. | |||||
Fixed bugs: | Fixed bugs: | ||||
----------- | ----------- | ||||
@@ -1074,6 +1074,10 @@ | |||||
<first>Tariq</first> | <first>Tariq</first> | ||||
<last>Master</last> | <last>Master</last> | ||||
</name> | </name> | ||||
<name> | |||||
<first>Thomas</first> | |||||
<last>Aglassinger</last> | |||||
</name> | |||||
<name> | <name> | ||||
<first>Thomas</first> | <first>Thomas</first> | ||||
<last>Butz</last> | <last>Butz</last> | ||||
@@ -276,6 +276,10 @@ public class ZipFile { | |||||
archive.readFully(signatureBytes); | archive.readFully(signatureBytes); | ||||
long sig = ZipLong.getValue(signatureBytes); | long sig = ZipLong.getValue(signatureBytes); | ||||
final long cfhSig = ZipLong.getValue(ZipOutputStream.CFH_SIG); | final long cfhSig = ZipLong.getValue(ZipOutputStream.CFH_SIG); | ||||
if (sig != cfhSig) { | |||||
throw new IOException("central directory is empty, can't expand" | |||||
+ " archive."); | |||||
} | |||||
while (sig == cfhSig) { | while (sig == cfhSig) { | ||||
archive.readFully(cfh); | archive.readFully(cfh); | ||||
int off = 0; | int off = 0; | ||||
@@ -0,0 +1,39 @@ | |||||
<?xml version="1.0"?> | |||||
<!-- | |||||
Licensed to the Apache Software Foundation (ASF) under one or more | |||||
contributor license agreements. See the NOTICE file distributed with | |||||
this work for additional information regarding copyright ownership. | |||||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
(the "License"); you may not use this file except in compliance with | |||||
the License. You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
--> | |||||
<project name="unzip-test" default="antunit" | |||||
xmlns:au="antlib:org.apache.ant.antunit"> | |||||
<import file="../antunit-base.xml" /> | |||||
<property name="dest.dir" location="unzip.dest"/> | |||||
<target name="setUp"> | |||||
<mkdir dir="${dest.dir}" /> | |||||
</target> | |||||
<target name="tearDown"> | |||||
<delete dir="${dest.dir}"/> | |||||
</target> | |||||
<target name="testFailureOnBrokenCentralDirectoryStructure"> | |||||
<au:expectfailure | |||||
expectedmessage="central directory is empty, can't expand archive."> | |||||
<unzip src="broken_cd.zip" dest="${dest.dir}"/> | |||||
</au:expectfailure> | |||||
</target> | |||||
</project> |