[ 
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)

Reply via email to