Fix ZipOS extraction of ZIP64 assets

This commit is contained in:
Justine Tunney 2024-03-30 19:00:40 -07:00
parent bef2cb05ff
commit 9ff65cff63
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
7 changed files with 50 additions and 24 deletions

View file

@ -29,8 +29,12 @@ int64_t GetZipLfileCompressedSize(const uint8_t *z) {
const uint8_t *pe = p + ZIP_LFILE_EXTRASIZE(z);
for (; p + ZIP_EXTRA_SIZE(p) <= pe; p += ZIP_EXTRA_SIZE(p)) {
if (ZIP_EXTRA_HEADERID(p) == kZipExtraZip64) {
if (8 <= ZIP_EXTRA_CONTENTSIZE(p)) {
return ZIP_READ64(ZIP_EXTRA_CONTENT(p));
int offset = 0;
if (ZIP_LFILE_UNCOMPRESSEDSIZE(z) == 0xFFFFFFFFu) {
offset += 8;
}
if (offset + 8 <= ZIP_EXTRA_CONTENTSIZE(p)) {
return ZIP_READ64(ZIP_EXTRA_CONTENT(p) + offset);
}
}
}