From 9ad53ef4ccee19c503f26a876d1d28826948c02f Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 24 Nov 2025 16:20:47 +0000 Subject: [PATCH 1/2] ext/phar: rely on main PHP API rather than ext/standard one --- ext/phar/phar.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ext/phar/phar.c b/ext/phar/phar.c index 23624ce6bcc78..12c2ea3ae7712 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -24,7 +24,6 @@ #include "func_interceptors.h" #include "ext/standard/crc32.h" #include "ext/standard/php_var.h" -#include "ext/standard/php_string.h" /* For php_stristr() */ #include "ext/standard/info.h" #include "zend_smart_str.h" @@ -2536,7 +2535,7 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_flush_ex(phar_archive_data *phar, zen } if (user_stub) { - char *pos = php_stristr(ZSTR_VAL(user_stub), halt_stub, ZSTR_LEN(user_stub), strlen(halt_stub)); + const char *pos = php_memnistr(ZSTR_VAL(user_stub), halt_stub, strlen(halt_stub), ZSTR_VAL(user_stub)+ZSTR_LEN(user_stub)); if (pos == NULL) { if (must_close_old_file) { From 4412f7df3b0370a8b64595222f4f73b96d374d41 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Mon, 24 Nov 2025 16:24:24 +0000 Subject: [PATCH 2/2] ext/phar: clarify logic in phar_ini_modify_handler --- ext/phar/phar.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ext/phar/phar.c b/ext/phar/phar.c index 12c2ea3ae7712..8e937a9782c34 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -52,8 +52,9 @@ static int phar_set_writeable_bit(zval *zv, void *argument) /* {{{ */ ZEND_INI_MH(phar_ini_modify_handler) /* {{{ */ { bool old, ini; + bool modifying_readonly_ini = ZSTR_LEN(entry->name) == sizeof("phar.readonly")-1; - if (ZSTR_LEN(entry->name) == sizeof("phar.readonly")-1) { + if (modifying_readonly_ini) { old = PHAR_G(readonly_orig); } else { old = PHAR_G(require_hash_orig); @@ -63,7 +64,7 @@ ZEND_INI_MH(phar_ini_modify_handler) /* {{{ */ /* do not allow unsetting in runtime */ if (stage == ZEND_INI_STAGE_STARTUP) { - if (ZSTR_LEN(entry->name) == sizeof("phar.readonly")-1) { + if (modifying_readonly_ini) { PHAR_G(readonly_orig) = ini; } else { PHAR_G(require_hash_orig) = ini; @@ -72,7 +73,7 @@ ZEND_INI_MH(phar_ini_modify_handler) /* {{{ */ return FAILURE; } - if (ZSTR_LEN(entry->name) == sizeof("phar.readonly")-1) { + if (modifying_readonly_ini) { PHAR_G(readonly) = ini; if (PHAR_G(request_init) && HT_IS_INITIALIZED(&PHAR_G(phar_fname_map))) { zend_hash_apply_with_argument(&(PHAR_G(phar_fname_map)), phar_set_writeable_bit, (void *)&ini);