[PR #453] Fix for clients failing on just having a 64 bit offset in ZIP64 #1038

Open
opened 2026-01-29 22:18:45 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/adamhathcock/sharpcompress/pull/453

State: closed
Merged: Yes


Sorry Adam, while testing some bigger ZIP64 files I found a case where some archive tools don't accept having just 0xFFFFFFFF only for relative offset. This should fix that by also forcing it for compressed/decompressed size to make sure they read everything from the ZIP64 directory record when anything goes over uint32 max for that specific entry.

(according to the spec it's allowed - so technically the commit before was not wrong, but it's probably better to be on the safe side:
https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
4.4.16 relative offset of local header: (4 bytes)

   This is the offset from the start of the first disk on
   which this file appears, to where the local header SHOULD
   be found.  If an archive is in ZIP64 format and the value
   in this field is 0xFFFFFFFF, the size will be in the 
   corresponding 8 byte zip64 extended information extra field.)

image

image

**Original Pull Request:** https://github.com/adamhathcock/sharpcompress/pull/453 **State:** closed **Merged:** Yes --- Sorry Adam, while testing some bigger ZIP64 files I found a case where some archive tools don't accept having just 0xFFFFFFFF only for relative offset. This should fix that by also forcing it for compressed/decompressed size to make sure they read everything from the ZIP64 directory record when anything goes over uint32 max for that specific entry. (according to the spec it's allowed - so technically the commit before was not wrong, but it's probably better to be on the safe side: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT 4.4.16 relative offset of local header: (4 bytes) This is the offset from the start of the first disk on which this file appears, to where the local header SHOULD be found. If an archive is in ZIP64 format and the value in this field is 0xFFFFFFFF, the size will be in the corresponding 8 byte zip64 extended information extra field.) ![image](https://user-images.githubusercontent.com/5462782/58343363-1454d500-7e53-11e9-9c9d-ea77c4339d90.png) ![image](https://user-images.githubusercontent.com/5462782/58343626-cb515080-7e53-11e9-812e-cee3c09fe1ef.png)
claunia added the pull-request label 2026-01-29 22:18:45 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/sharpcompress#1038