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

Peter Lee commented on COMPRESS-549:
------------------------------------

Hi [~sebkur]

I think there are some problems in your testData. The variable 
_general_purpose_bit_flag_bit3_on_ seems to be used to indicate if Data 
Descriptor is used or not. (you set it to be true in your test cases) But it 
seems the test data lack of Data Descriptor. I modified the data a little bit 
and it is passed.
{code:java}
public static byte[] get(boolean general_purpose_bit_flag_bit3_on)
{
    final byte gpbf = (byte) (general_purpose_bit_flag_bit3_on ? 0x08
        : 0x00);

    return new byte[] {
        // Local File header
        'P', 'K', 3, 4, // Local File Header Signature
        13, 0, // Version needed to extract
        gpbf, 8, // General purpose bit flag
        ZipEntry.STORED, 0, // Compression method
        'q', 'l', 't', 'G', // Last Modification time & date
        0, 0, 0, 0, // CRC32
        0, 0, 0, 0, // Compressed Size
        0, 0, 0, 0, // Uncompressed Size
        12, 0, // File name length
        0, 0, // Extra field length
        'F', 'o', 'l', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '/',

        /********************************/
        // Data Descriptor, this sector should not appear if 
general_purpose_bit_flag_bit3_on is false
        'P', 'K', 7, 8, // Data Descriptor signature
        0, 0, 0, 0, // CRC32 in Data Descriptor
        0, 0, 0, 0, // compressed size in Data Descriptor
        0, 0, 0, 0, // uncompressed size Data Descriptor
        /********************************/

        // File name
        // Central directory file header
        'P', 'K', 1, 2, // Central Directory File Header Signature
        13, 0, // Version made by
        13, 0, // Version needed to extract
        gpbf, 8, // General purpose bit flag
        ZipEntry.STORED, 0, // Compression method
        'q', 'l', 't', 'G', // Last Modification time & date
        0, 0, 0, 0, // CRC32
        0, 0, 0, 0, // Compressed Size
        0, 0, 0, 0, // Uncompressed Size
        12, 0, // File name length
        0, 0, // Extra field length
        0, 0, // File comment length
        0, 0, // Disk number where file starts
        0, 0, // Internal File attributes
        0, 0, 0, 0, // External File attributes
        0, 0, 0, 0, // Relative offset of local header file
        'F', 'o', 'l', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '/',
        // File name
        // End of Central Directory Record
        'P', 'K', 5, 6, // Local File Header Signature
        0, 0, // Number of this disk
        0, 0, // Disk where CD starts
        1, 0, // Number of CD records on this disk
        1, 0, // Total number of records
        58, 0, 0, 0, // Size of CD
        42, 0, 0, 0, // Offset of start of CD
        0, 0, // Comment length
    };
}
{code}
Please note the data I added between Local File Header and Central Directory 
file.

> Inconsistency with latest PKZip standard
> ----------------------------------------
>
>                 Key: COMPRESS-549
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-549
>             Project: Commons Compress
>          Issue Type: Bug
>    Affects Versions: 1.20
>            Reporter: Sebastian Kürten
>            Priority: Major
>
> I came across some Zip archives that cannot be read using 
> ZipArchiveInputStream. Investigating the issue, I found that 
> java.util.zip.ZipInputStream from the JDK shows the same behavior while 
> java.util.zip.ZipFile seems to do fine. For java.util.zip.ZipInputStream, the 
> issue has been reported here: 
> [https://bugs.openjdk.java.net/browse/JDK-8143613] and an example file is 
> provided. I copied the testing file into a repository for testing. Here's the 
> example file: 
> [https://github.com/sebkur/test-zip-impls/blob/master/src/test/java/de/topobyte/zip/tests/jdk8143613/TestData.java]
>  and the test that fails reading that data using ZipArchiveInputStream: 
> [https://github.com/sebkur/test-zip-impls/blob/master/src/test/java/de/topobyte/zip/tests/jdk8143613/TestCommonsZipInputStream.java]
>  
>  
> If this file is indeed a ZIP archive consistent with the PKZip spec, I think 
> commons-compress does not work according to the spec. I would appreciate if 
> someone could look into this and verify if this is indeed a bug in 
> commons-compress. Thanks!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to