[ 
https://issues.apache.org/jira/browse/COMPRESS-479?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16906518#comment-16906518
 ] 

Stefan Bodewig commented on COMPRESS-479:
-----------------------------------------

For now I've decided to move the decisions to the API of {{ZipArchiveEntry}}.

By default extra fields that Compress should support but we fail to parse will 
be read and converted but if you really want to be strict, you can do so using 
the new {{getExtraFields}} overload.

The master branch now reads your archive without problems, but certainly 
doesn't use the unicode extra field.

I'll discuss on the dev list whether this is the way to go or whether people 
see a better approach.

> Unable to extract Zip with unknown UniCode path extra data version
> ------------------------------------------------------------------
>
>                 Key: COMPRESS-479
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-479
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Archivers
>    Affects Versions: 1.18
>            Reporter: Robin Schimpf
>            Assignee: Stefan Bodewig
>            Priority: Major
>              Labels: zip
>             Fix For: 1.19
>
>         Attachments: unicode-test10509149899131946592.zip
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> The following exception is thrown when the version of the UniCode path extra 
> data version is not 1. 7-Zip and Windows Explorer will extract the attached 
> file. The version in the file was changed via a Hex editor to provoke the 
> error.
> {code:java}
> java.lang.RuntimeException: Error parsing extra fields for entry: 
> %U20AC_for_Dollar.txt - Unsupported version [116] for UniCode path extra data.
>       at 
> org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtra(ZipArchiveEntry.java:626)
>       at 
> org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextZipEntry(ZipArchiveInputStream.java:315)
>       at 
> org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry(ZipArchiveInputStream.java:408)
>       at 
> org.apache.commons.compress.archivers.zip.UTF8ZipFilesTest.testZipFileReadsUnicodeFields(UTF8ZipFilesTest.java:186)
> ...
> Caused by: java.util.zip.ZipException: Unsupported version [116] for UniCode 
> path extra data.
>       at 
> org.apache.commons.compress.archivers.zip.AbstractUnicodeExtraField.parseFromLocalFileData(AbstractUnicodeExtraField.java:172)
>       at 
> org.apache.commons.compress.archivers.zip.ExtraFieldUtils.parse(ExtraFieldUtils.java:180)
>       at 
> org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtra(ZipArchiveEntry.java:620)
> {code}
> As I understand the specification in Section 4.6.8 and 4.6.9 when the version 
> is unknown the information shoule be ignored.
> Changes MAY NOT be backward compatible so this extra field *SHOULD NOT be 
> used if the version is not recognized*.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to