diff --git a/.github/scripts/windows/build_task.bat b/.github/scripts/windows/build_task.bat index e802ad10a1985..cf2f748fb13d7 100644 --- a/.github/scripts/windows/build_task.bat +++ b/.github/scripts/windows/build_task.bat @@ -32,7 +32,11 @@ if "%THREAD_SAFE%" equ "0" set ADD_CONF=%ADD_CONF% --disable-zts if "%INTRINSICS%" neq "" set ADD_CONF=%ADD_CONF% --enable-native-intrinsics=%INTRINSICS% if "%ASAN%" equ "1" set ADD_CONF=%ADD_CONF% --enable-sanitizer --enable-debug-pack -set CFLAGS=/W2 /WX /w14013 /wd4146 /wd4244 +rem C4018: comparison: signed/unsigned mismatch +rem C4146: unary minus operator applied to unsigned type +rem C4244: type conversion, possible loss of data +rem C4267: 'size_t' type conversion, possible loss of data +set CFLAGS=/W3 /WX /wd4018 /wd4146 /wd4244 /wd4267 cmd /c configure.bat ^ --enable-snapshot-build ^ diff --git a/Zend/tests/bug30346.phpt b/Zend/tests/ArrayAccess/bug30346.phpt similarity index 100% rename from Zend/tests/bug30346.phpt rename to Zend/tests/ArrayAccess/bug30346.phpt diff --git a/Zend/tests/bug33710.phpt b/Zend/tests/ArrayAccess/bug33710.phpt similarity index 100% rename from Zend/tests/bug33710.phpt rename to Zend/tests/ArrayAccess/bug33710.phpt diff --git a/Zend/tests/bug39297.phpt b/Zend/tests/ArrayAccess/bug39297.phpt similarity index 100% rename from Zend/tests/bug39297.phpt rename to Zend/tests/ArrayAccess/bug39297.phpt diff --git a/Zend/tests/bug41209.phpt b/Zend/tests/ArrayAccess/bug41209.phpt similarity index 100% rename from Zend/tests/bug41209.phpt rename to Zend/tests/ArrayAccess/bug41209.phpt diff --git a/Zend/tests/bug63217.phpt b/Zend/tests/ArrayAccess/bug63217.phpt similarity index 100% rename from Zend/tests/bug63217.phpt rename to Zend/tests/ArrayAccess/bug63217.phpt diff --git a/Zend/tests/bug64417.phpt b/Zend/tests/ArrayAccess/bug64417.phpt similarity index 100% rename from Zend/tests/bug64417.phpt rename to Zend/tests/ArrayAccess/bug64417.phpt diff --git a/Zend/tests/bug68896.phpt b/Zend/tests/ArrayAccess/bug68896.phpt similarity index 100% rename from Zend/tests/bug68896.phpt rename to Zend/tests/ArrayAccess/bug68896.phpt diff --git a/Zend/tests/bug69955.phpt b/Zend/tests/ArrayAccess/bug69955.phpt similarity index 100% rename from Zend/tests/bug69955.phpt rename to Zend/tests/ArrayAccess/bug69955.phpt diff --git a/Zend/tests/bug71731.phpt b/Zend/tests/ArrayAccess/bug71731.phpt similarity index 100% rename from Zend/tests/bug71731.phpt rename to Zend/tests/ArrayAccess/bug71731.phpt diff --git a/Zend/tests/bug78356.phpt b/Zend/tests/ArrayAccess/bug78356.phpt similarity index 100% rename from Zend/tests/bug78356.phpt rename to Zend/tests/ArrayAccess/bug78356.phpt diff --git a/Zend/tests/bug26697.phpt b/Zend/tests/autoload/bug26697.phpt similarity index 100% rename from Zend/tests/bug26697.phpt rename to Zend/tests/autoload/bug26697.phpt diff --git a/Zend/tests/bug33116.phpt b/Zend/tests/autoload/bug33116.phpt similarity index 100% rename from Zend/tests/bug33116.phpt rename to Zend/tests/autoload/bug33116.phpt diff --git a/Zend/tests/bug37138.phpt b/Zend/tests/autoload/bug37138.phpt similarity index 100% rename from Zend/tests/bug37138.phpt rename to Zend/tests/autoload/bug37138.phpt diff --git a/Zend/tests/bug39003.phpt b/Zend/tests/autoload/bug39003.phpt similarity index 100% rename from Zend/tests/bug39003.phpt rename to Zend/tests/autoload/bug39003.phpt diff --git a/Zend/tests/bug42798.phpt b/Zend/tests/autoload/bug42798.phpt similarity index 100% rename from Zend/tests/bug42798.phpt rename to Zend/tests/autoload/bug42798.phpt diff --git a/Zend/tests/bug46665.phpt b/Zend/tests/autoload/bug46665.phpt similarity index 100% rename from Zend/tests/bug46665.phpt rename to Zend/tests/autoload/bug46665.phpt diff --git a/Zend/tests/bug46665_autoload.inc b/Zend/tests/autoload/bug46665_autoload.inc similarity index 100% rename from Zend/tests/bug46665_autoload.inc rename to Zend/tests/autoload/bug46665_autoload.inc diff --git a/Zend/tests/bug49908.phpt b/Zend/tests/autoload/bug49908.phpt similarity index 100% rename from Zend/tests/bug49908.phpt rename to Zend/tests/autoload/bug49908.phpt diff --git a/Zend/tests/bug61011.phpt b/Zend/tests/autoload/bug61011.phpt similarity index 100% rename from Zend/tests/bug61011.phpt rename to Zend/tests/autoload/bug61011.phpt diff --git a/Zend/tests/bug63741.phpt b/Zend/tests/autoload/bug63741.phpt similarity index 100% rename from Zend/tests/bug63741.phpt rename to Zend/tests/autoload/bug63741.phpt diff --git a/Zend/tests/bug65322.phpt b/Zend/tests/autoload/bug65322.phpt similarity index 100% rename from Zend/tests/bug65322.phpt rename to Zend/tests/autoload/bug65322.phpt diff --git a/Zend/tests/bug78868.phpt b/Zend/tests/autoload/bug78868.phpt similarity index 100% rename from Zend/tests/bug78868.phpt rename to Zend/tests/autoload/bug78868.phpt diff --git a/Zend/tests/bug78921.phpt b/Zend/tests/autoload/bug78921.phpt similarity index 100% rename from Zend/tests/bug78921.phpt rename to Zend/tests/autoload/bug78921.phpt diff --git a/Zend/tests/bug81626.phpt b/Zend/tests/bug81626.phpt index b05cb23097bbb..26f549795a66e 100644 --- a/Zend/tests/bug81626.phpt +++ b/Zend/tests/bug81626.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #81626: Error on use static:: in __сallStatic() wrapped to Closure::fromCallable() +Bug #81626: Error on use static:: in __callStatic() wrapped to Closure::fromCallable() --FILE-- No ZSTD => No HSTS => Yes GSASL => No -Protocols => dict, file, ftp, ftps, gopher, %r(gophers, )?%rhttp, https, imap, imaps, ldap, ldaps, %r(mqtt, )?%rpop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp +Protocols => dict, file, ftp, ftps, gopher, %r(gophers, )?%rhttp, https, imap, imaps, ldap, ldaps, %r(mqtt, )?%rpop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp%r(, ws)?(, wss)?%r Host => %s-pc-win32 SSL Version => OpenSSL/%s ZLib Version => %s diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c index a87e7131375d9..757af88414d5a 100644 --- a/ext/gd/libgd/gd.c +++ b/ext/gd/libgd/gd.c @@ -3187,7 +3187,11 @@ int gdImagePaletteToTrueColor(gdImagePtr src) const unsigned int sy = gdImageSY(src); const unsigned int sx = gdImageSX(src); - src->tpixels = (int **) gdMalloc(sizeof(int *) * sy); + // Note: do not revert back to gdMalloc() below ; reason here, + // due to a bug with a certain memory_limit INI value treshold, + // imagepalettetotruecolor crashes with even unrelated ZendMM allocations. + // See GH-17772 for an use case. + src->tpixels = (int **) gdCalloc(sizeof(int *), sy); if (src->tpixels == NULL) { return 0; } diff --git a/ext/gd/tests/gh17772.phpt b/ext/gd/tests/gh17772.phpt new file mode 100644 index 0000000000000..6252a13341f41 --- /dev/null +++ b/ext/gd/tests/gh17772.phpt @@ -0,0 +1,28 @@ +--TEST-- +GH-17772 (imagepalettetotruecolor segfault on image deallocation) +--EXTENSIONS-- +gd +--INI-- +memory_limit=2M +--CREDITS-- +YuanchengJiang +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line %d diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index fcaa5c270e25c..6d5b9d71c27ae 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -4828,24 +4828,19 @@ ZEND_METHOD(ReflectionClass, isCloneable) if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) { RETURN_FALSE; } + if (ce->clone) { + RETURN_BOOL(ce->clone->common.fn_flags & ZEND_ACC_PUBLIC); + } if (!Z_ISUNDEF(intern->obj)) { - if (ce->clone) { - RETURN_BOOL(ce->clone->common.fn_flags & ZEND_ACC_PUBLIC); - } else { - RETURN_BOOL(Z_OBJ_HANDLER(intern->obj, clone_obj) != NULL); - } + RETURN_BOOL(Z_OBJ_HANDLER(intern->obj, clone_obj) != NULL); } else { - if (ce->clone) { - RETURN_BOOL(ce->clone->common.fn_flags & ZEND_ACC_PUBLIC); - } else { - if (UNEXPECTED(object_init_ex(&obj, ce) != SUCCESS)) { - return; - } - /* We're not calling the constructor, so don't call the destructor either. */ - zend_object_store_ctor_failed(Z_OBJ(obj)); - RETVAL_BOOL(Z_OBJ_HANDLER(obj, clone_obj) != NULL); - zval_ptr_dtor(&obj); + if (UNEXPECTED(object_init_ex(&obj, ce) != SUCCESS)) { + return; } + /* We're not calling the constructor, so don't call the destructor either. */ + zend_object_store_ctor_failed(Z_OBJ(obj)); + RETVAL_BOOL(Z_OBJ_HANDLER(obj, clone_obj) != NULL); + zval_ptr_dtor(&obj); } } /* }}} */ diff --git a/ext/standard/tests/mail/mail_util.inc b/ext/standard/tests/mail/mail_util.inc index 72e9f32fb82b3..0eee6cb9caaee 100644 --- a/ext/standard/tests/mail/mail_util.inc +++ b/ext/standard/tests/mail/mail_util.inc @@ -143,7 +143,7 @@ class MailBox $this->mailConnecter->send(self::SEARCH, "UID SEARCH SUBJECT \"{$subject}\""); $res = $this->mailConnecter->getResponse(self::SEARCH); - preg_match('/SEARCH ([0-9 ]+)/is', $res, $matches); + preg_match('/SEARCH ([0-9 ]+)/i', $res, $matches); return isset($matches[1]) ? explode(' ', trim($matches[1])) : []; } @@ -166,8 +166,7 @@ class MailBox if (!$line) { continue; } - $items = explode(':', $line); - preg_match('/^(.+?):(.+?)$/', $line, $matches); + preg_match('/^(.+?):(.+)$/', $line, $matches); $key = trim($matches[1] ?? ''); $val = trim($matches[2] ?? ''); if (!$key || !$val || $val === self::FETCH_HEADERS.' OK UID completed' || $val === ')') { diff --git a/win32/build/phpize.js.in b/win32/build/phpize.js.in index 0f7a8ab18123b..2be46a476b352 100644 --- a/win32/build/phpize.js.in +++ b/win32/build/phpize.js.in @@ -92,6 +92,7 @@ function find_config_w32(dirname) deps = get_module_dep(contents); + n = ""; item = new Module_Item(n, c, dir_line, deps, contents); MODULES.Add(n, item); }