On Mon, 25 Mar 2024 21:37:03 GMT, Liam Miller-Cushon <cus...@openjdk.org> wrote:

> This change fixes a zip64 bug in the launcher that is prevent it from reading 
> the manifest of jars where the 'relative offset of local header' field in the 
> central directory entry is >4GB. As described in APPNOTE.TXT 4.5.3, the 
> offset is too large to be stored in the central directory it is stored in a 
> 'Zip64 Extended Information Extra Field'.

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

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?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18479#discussion_r1540404585
PR Review Comment: https://git.openjdk.org/jdk/pull/18479#discussion_r1540405121

Reply via email to