diff --git a/.circleci/config.yml b/.circleci/config.yml index 8c8f08f17543a..7fa2a47aa503f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,7 +5,7 @@ jobs: resource_class: arm.medium docker: - image: cimg/base:current-24.04 - - image: mysql:8.3 + - image: mysql:8.4 environment: MYSQL_ALLOW_EMPTY_PASSWORD: true MYSQL_ROOT_PASSWORD: '' diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 423fe39bdc44c..97064ad3972d0 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -138,7 +138,7 @@ jobs: LINUX_X64: services: mysql: - image: mysql:8.3 + image: mysql:8.4 ports: - 3306:3306 env: @@ -277,7 +277,7 @@ jobs: PDO_FIREBIRD_TEST_DSN: firebird:dbname=firebird:test.fdb services: mysql: - image: mysql:8.3 + image: mysql:8.4 ports: - 3306:3306 env: @@ -406,7 +406,7 @@ jobs: if: inputs.branch == 'master' services: mysql: - image: mysql:8.3 + image: mysql:8.4 ports: - 3306:3306 env: @@ -652,7 +652,7 @@ jobs: OPCACHE_VARIATION: services: mysql: - image: mysql:8.3 + image: mysql:8.4 ports: - 3306:3306 env: diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index ab917b518e1a6..4f1c53c023025 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -12,7 +12,6 @@ on: - .cirrus.yml - .circleci/** branches: - - PHP-8.1 - PHP-8.2 - PHP-8.3 - PHP-8.4 @@ -77,7 +76,7 @@ jobs: if: github.repository == 'php/php-src' || github.event_name == 'pull_request' services: mysql: - image: mysql:8.3 + image: mysql:8.4 ports: - 3306:3306 env: @@ -183,7 +182,7 @@ jobs: PDO_FIREBIRD_TEST_DSN: firebird:dbname=firebird:test.fdb services: mysql: - image: mysql:8.3 + image: mysql:8.4 ports: - 3306:3306 env: diff --git a/Zend/tests/oss-fuzz-478009707.phpt b/Zend/tests/oss-fuzz-478009707.phpt index 02ba186a49ece..bd002fc3badf5 100644 --- a/Zend/tests/oss-fuzz-478009707.phpt +++ b/Zend/tests/oss-fuzz-478009707.phpt @@ -18,6 +18,10 @@ $c = new C(1); $c->prop = 1; var_dump($c->prop); +$c->prop = PHP_INT_MAX; +var_dump($c->prop); + ?> ---EXPECT-- +--EXPECTF-- int(4) +float(%s) diff --git a/ext/opcache/jit/zend_jit_helpers.c b/ext/opcache/jit/zend_jit_helpers.c index 07f1b61c6b520..59bb9401d9a98 100644 --- a/ext/opcache/jit/zend_jit_helpers.c +++ b/ext/opcache/jit/zend_jit_helpers.c @@ -2944,7 +2944,7 @@ static void ZEND_FASTCALL zend_jit_assign_obj_op_helper(zend_object *zobj, zend_ //??? } else { //??? prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr); //??? } - if (prop_info) { + if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) { /* special case for typed properties */ zend_jit_assign_op_to_typed_prop(zptr, prop_info, value, binary_op); } else { @@ -3140,6 +3140,9 @@ static void ZEND_FASTCALL zend_jit_pre_inc_obj_helper(zend_object *zobj, zend_st } } else { zend_property_info *prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); + if (prop_info && !ZEND_TYPE_IS_SET(prop_info->type)) { + prop_info = NULL; + } if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { fast_long_increment_function(prop); @@ -3210,6 +3213,9 @@ static void ZEND_FASTCALL zend_jit_pre_dec_obj_helper(zend_object *zobj, zend_st } } else { zend_property_info *prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); + if (prop_info && !ZEND_TYPE_IS_SET(prop_info->type)) { + prop_info = NULL; + } if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { fast_long_decrement_function(prop); @@ -3278,6 +3284,9 @@ static void ZEND_FASTCALL zend_jit_post_inc_obj_helper(zend_object *zobj, zend_s ZVAL_NULL(result); } else { zend_property_info *prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); + if (prop_info && !ZEND_TYPE_IS_SET(prop_info->type)) { + prop_info = NULL; + } if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { ZVAL_LONG(result, Z_LVAL_P(prop)); @@ -3339,6 +3348,9 @@ static void ZEND_FASTCALL zend_jit_post_dec_obj_helper(zend_object *zobj, zend_s ZVAL_NULL(result); } else { zend_property_info *prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); + if (prop_info && !ZEND_TYPE_IS_SET(prop_info->type)) { + prop_info = NULL; + } if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { ZVAL_LONG(result, Z_LVAL_P(prop));