[
https://issues.apache.org/jira/browse/COMPRESS-538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17143694#comment-17143694
]
Peter Lee edited comment on COMPRESS-538 at 6/28/20, 3:09 AM:
--------------------------------------------------------------
-I have found out what's wrong here : the extra fields was removed but the
extra field length was not updated. Will try to fix this ASAP.-
Update : Double checked the code and find out something :
If a entry has zip64 extra field but it actually doesn't need one(like the one
in this issue - the uncompressed size is not specified beforehand, thus the
zip64 was added), we will still add the Zip64 extra field in the Local File
Header. But it won't write zip64 to Central Directory, and the version needed
to extract is set to the ones without Zip64.
Not sure if this is a problem. Seems we need to have more discussion in mailing
list.
was (Author: peterlee):
I have found out what's wrong here : the extra fields was removed but the extra
field length was not updated. Will try to fix this ASAP.
> ZipEntry created using ZipArchiveOutputStream(File) constructor adds 'ZIP64
> Extended Information Extra Field' even when zip64 is not required.
> ----------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: COMPRESS-538
> URL: https://issues.apache.org/jira/browse/COMPRESS-538
> Project: Commons Compress
> Issue Type: Bug
> Components: Archivers
> Affects Versions: 1.8, 1.9, 1.20
> Reporter: Pritesh
> Assignee: Peter Lee
> Priority: Major
>
> When creating a zip file using
> [ZipArchiveOutputStream(File)|https://commons.apache.org/proper/commons-compress/apidocs/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.html#ZipArchiveOutputStream-java.io.File-]
> constructor each entry get an extra `Zip64ExtendedInformationExtraField`
> header which shouldn't be there.
>
> The issue can be reproduced using below code sample
> {code:java}
> public static void main(String[] args) throws IOException {
> // Create file
> final File file = File.createTempFile("apache_", ".zip");
> try ( ZipArchiveOutputStream zos = new ZipArchiveOutputStream(file)) {
> zos.putArchiveEntry(new ZipArchiveEntry("TextFile1.txt"));
> zos.closeArchiveEntry();
> }
> // List Headers File
> final ZipFile zipFile = new ZipFile(file);
> final Enumeration<? extends ZipArchiveEntry> entries =
> zipFile.getEntries();
> while (entries.hasMoreElements()) {
> final ZipArchiveEntry entry = entries.nextElement();
> for (ZipExtraField zipExtraField : entry.getExtraFields()) {
> System.out.println("EntryName:" + entry.getName() + " Header:
> "+ zipExtraField.getHeaderId().getValue()); // Header shouldn't be present.
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)