diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-11-07 11:17:14 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-11-07 11:17:14 +0100 |
commit | aed4f6e8492d64de10c540dc57a30a995163ac3e (patch) | |
tree | d58323a05ae011da3edd94751c2ebe30a86a7ab8 | |
parent | 0988f6963420ab26b7804e080380b813ca79cfa8 (diff) | |
parent | 8d2a9d8859db8c3b35e44ae55f0bdadeb594d872 (diff) | |
download | php-git-aed4f6e8492d64de10c540dc57a30a995163ac3e.tar.gz |
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fixed bug #78759
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | ext/standard/array.c | 10 | ||||
-rw-r--r-- | ext/standard/tests/array/bug78759.phpt | 15 |
3 files changed, 21 insertions, 5 deletions
@@ -9,6 +9,7 @@ PHP NEWS - Standard: . Fixed bug #77930 (stream_copy_to_stream should use mmap more often). (Nikita) + . Fixed bug #78759 (array_search in $GLOBALS). (Nikita) - OpenSSL: . Fixed bug #78775 (TLS issues from HTTP request affecting other encrypted diff --git a/ext/standard/array.c b/ext/standard/array.c index d44e5d50e7..ec0890478a 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1558,7 +1558,7 @@ static inline void php_search_array(INTERNAL_FUNCTION_PARAMETERS, int behavior) if (strict) { if (Z_TYPE_P(value) == IS_LONG) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) { + ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(array), num_idx, str_idx, entry) { ZVAL_DEREF(entry); if (Z_TYPE_P(entry) == IS_LONG && Z_LVAL_P(entry) == Z_LVAL_P(value)) { if (behavior == 0) { @@ -1574,7 +1574,7 @@ static inline void php_search_array(INTERNAL_FUNCTION_PARAMETERS, int behavior) } } ZEND_HASH_FOREACH_END(); } else { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) { + ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(array), num_idx, str_idx, entry) { ZVAL_DEREF(entry); if (fast_is_identical_function(value, entry)) { if (behavior == 0) { @@ -1592,7 +1592,7 @@ static inline void php_search_array(INTERNAL_FUNCTION_PARAMETERS, int behavior) } } else { if (Z_TYPE_P(value) == IS_LONG) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) { + ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(array), num_idx, str_idx, entry) { if (fast_equal_check_long(value, entry)) { if (behavior == 0) { RETURN_TRUE; @@ -1607,7 +1607,7 @@ static inline void php_search_array(INTERNAL_FUNCTION_PARAMETERS, int behavior) } } ZEND_HASH_FOREACH_END(); } else if (Z_TYPE_P(value) == IS_STRING) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) { + ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(array), num_idx, str_idx, entry) { if (fast_equal_check_string(value, entry)) { if (behavior == 0) { RETURN_TRUE; @@ -1622,7 +1622,7 @@ static inline void php_search_array(INTERNAL_FUNCTION_PARAMETERS, int behavior) } } ZEND_HASH_FOREACH_END(); } else { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) { + ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(array), num_idx, str_idx, entry) { if (fast_equal_check_function(value, entry)) { if (behavior == 0) { RETURN_TRUE; diff --git a/ext/standard/tests/array/bug78759.phpt b/ext/standard/tests/array/bug78759.phpt new file mode 100644 index 0000000000..55cd29667c --- /dev/null +++ b/ext/standard/tests/array/bug78759.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #78759: array_search in $GLOBALS +--FILE-- +<?php + +$a = 22; +var_dump($GLOBALS["a"]); // int 22 +var_dump(array_search(22, $GLOBALS)); // false +var_dump(array_search(22, $GLOBALS, true)); // false + +?> +--EXPECT-- +int(22) +string(1) "a" +string(1) "a" |