RFR: 8328995: launcher can't open jar files where the offset of the manifest is >4GB [v3]

Jiangli Zhou jiangli at openjdk.org
Fri Mar 29 17:34:31 UTC 2024


On Wed, 27 Mar 2024 16:03:09 GMT, Liam Miller-Cushon <cushon at openjdk.org> wrote:

>> src/java.base/share/native/libjli/manifest_info.h line 59:
>> 
>>> 57: #define ZIP64_EXTID   1       // Extra field Zip64 header ID
>>> 58: 
>>> 59: #define ZIP64_EXTMAXLEN 36 // Maximum Zip64 extra field length
>> 
>> The fields described in APPNOTE-6.3.9.TXT 4.5.3 are total 32 bytes. Any other additional fields in the Zip64 extended information?
>> 
>> 
>>         Value      Size       Description
>>         -----      ----       -----------
>> (ZIP64) 0x0001     2 bytes    Tag for this "extra" block type
>>         Size       2 bytes    Size of this "extra" block
>>         Original 
>>         Size       8 bytes    Original uncompressed file size
>>         Compressed
>>         Size       8 bytes    Size of compressed data
>>         Relative Header
>>         Offset     8 bytes    Offset of local header record
>>         Disk Start
>>         Number     4 bytes    Number of the disk on which
>>                               this file starts
>
> Thanks for the catch, I had missed that the disk start number is 4 bytes and not 8. I pushed a commit. I also removed some unused references to the disk number, which is only being used to validate the size of the zip64 extended info.

Ok. Could you please also fix the above `36`? Please change the start of `//` (comment) to be aligned with the earlier comment lines.

>> src/java.base/share/native/libjli/manifest_info.h line 146:
>> 
>>> 144:  * Macros for getting Extensible Data Fields
>>> 145:  */
>>> 146: #define ZIPEXT_HDR(b) SH(b, 0)      /* Header ID */
>> 
>> How about naming the macros as ZIP64EXT_HDR and ZIP64EXT_SIZ?
>
> My thinking was that all extensible data fields start with a header with an id and a length, and these macros are used to iterate through the extra fields to find the zip64 extended information extra field, so these macros aren't zip64-specific.

Seem reasonable, thanks.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/18479#discussion_r1544719690
PR Review Comment: https://git.openjdk.org/jdk/pull/18479#discussion_r1544718064


More information about the core-libs-dev mailing list