Commit 7dd0cebbc88 for php
commit 7dd0cebbc88f1cfceb599c303a7cba293de18b82
Author: Weilin Du <weilindu@php.net>
Date: Sat Oct 31 03:10:11 2026 +0800
ext/phar: Fix repeated compression with the same algorithm
Follow-up to #25045.
Skip entries whose compression flags already match the requested algorithm
so repeated Phar::compressFiles() calls do not corrupt their contents.
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c
index 79ea1cf2df9..e2f36f1c7b2 100644
--- a/ext/phar/phar_object.c
+++ b/ext/phar/phar_object.c
@@ -3161,7 +3161,7 @@ static int phar_set_compression(zval *zv, void *argument) /* {{{ */
phar_entry_info *entry = (phar_entry_info *)Z_PTR_P(zv);
uint32_t compress = *(uint32_t *)argument;
- if (entry->is_deleted) {
+ if (entry->is_deleted || (entry->flags & PHAR_ENT_COMPRESSION_MASK) == compress) {
return ZEND_HASH_APPLY_KEEP;
}