From 95befc786ae89afc5b9b6c6d26fa26883e50ebf0 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 22 Aug 2022 21:11:39 +0300 Subject: [PATCH] Fix type inference Fixes oss-fuzz #50272 --- Zend/Optimizer/zend_inference.c | 3 +++ ext/opcache/tests/opt/inference_015.phpt | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 ext/opcache/tests/opt/inference_015.phpt diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index 5dec2dd24a3..dc73ffb6f41 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -1951,6 +1951,9 @@ static uint32_t assign_dim_array_result_type( tmp |= MAY_BE_ARRAY_KEY_STRING; if (dim_op_type != IS_CONST) { // FIXME: numeric string + if (arr_type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE)) { + tmp |= MAY_BE_ARRAY_PACKED; + } tmp |= MAY_BE_HASH_ONLY(arr_type) ? MAY_BE_ARRAY_NUMERIC_HASH : MAY_BE_ARRAY_KEY_LONG; } } diff --git a/ext/opcache/tests/opt/inference_015.phpt b/ext/opcache/tests/opt/inference_015.phpt new file mode 100644 index 00000000000..e64c02225b3 --- /dev/null +++ b/ext/opcache/tests/opt/inference_015.phpt @@ -0,0 +1,19 @@ +--TEST-- +Type inference 015: ASSIGN_DIM_OP +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- + +DONE +--EXPECT-- +DONE