36 lines
1.5 KiB
Diff
36 lines
1.5 KiB
Diff
|
|
From 15c45adb76e81a7e3a8a9e17b2a56eb90f668f44 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Mark Adler <madler@alumni.caltech.edu>
|
||
|
|
Date: Tue, 7 Nov 2023 15:46:41 -0800
|
||
|
|
Subject: [PATCH] Fix decision on the emission of Zip64 end records in minizip.
|
||
|
|
|
||
|
|
The appnote says that if the number of entries in the end record
|
||
|
|
is 0xffff, then the actual number of entries will be found in the
|
||
|
|
Zip64 end record. Therefore if the number of entries is equal to
|
||
|
|
0xffff, it can't be in the end record by itself, since that is an
|
||
|
|
instruction to get the number from the Zip64 end record. This code
|
||
|
|
would just store 0xffff in the end record in that case, not making
|
||
|
|
a Zip64 end record. This commit fixes that.
|
||
|
|
|
||
|
|
Reference: https://github.com/madler/zlib/commit/15c45adb76e81a7e3a8a9e17b2a56eb90f668f44
|
||
|
|
Conflict: no
|
||
|
|
---
|
||
|
|
contrib/minizip/zip.c | 2 +-
|
||
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/contrib/minizip/zip.c b/contrib/minizip/zip.c
|
||
|
|
index 0446109..86be90b 100644
|
||
|
|
--- a/contrib/minizip/zip.c
|
||
|
|
+++ b/contrib/minizip/zip.c
|
||
|
|
@@ -1872,7 +1872,7 @@ extern int ZEXPORT zipClose(zipFile file, const char* global_comment) {
|
||
|
|
free_linkedlist(&(zi->central_dir));
|
||
|
|
|
||
|
|
pos = centraldir_pos_inzip - zi->add_position_when_writing_offset;
|
||
|
|
- if(pos >= 0xffffffff || zi->number_entry > 0xFFFF)
|
||
|
|
+ if(pos >= 0xffffffff || zi->number_entry >= 0xFFFF)
|
||
|
|
{
|
||
|
|
ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
|
||
|
|
Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
|
||
|
|
--
|
||
|
|
2.33.0
|
||
|
|
|