Commit 6201bd6 for zlib
commit 6201bd6046fc0d5bc6b665ae6a32cb54e857d5b4
Author: Naveed Khan <dxbnaveed.k@gmail.com>
Date: Sun Oct 18 15:06:03 2026 +0530
Fix NULL dereference on repeated minizip zipAlreadyThere() calls.
block_stop() did not clear block->node, which is what block_end()
and block_get() check to see that the central directory reader was
stopped. After an invalid central directory, the next
zipAlreadyThere() call would read through the NULL next pointer.
diff --git a/contrib/minizip/zip.c b/contrib/minizip/zip.c
index b2db1df..05d5388 100644
--- a/contrib/minizip/zip.c
+++ b/contrib/minizip/zip.c
@@ -309,6 +309,7 @@ local void block_init(block_t *block, linkedlist_data *list) {
data is added to the datablocks. This is invoked if the central directory is
invalid, so there is no longer any point in attempting to interpret it. */
local void block_stop(block_t *block) {
+ block->node = NULL;
block->left = 0;
block->next = NULL;
}