From bda8920b9005180d2c16eff168e208aa6ba7d099 Mon Sep 17 00:00:00 2001 From: Rowan Tommins Date: Mon, 29 Mar 2021 19:55:57 +0100 Subject: [PATCH] Handle reference zvals when outputting superglobals in phpinfo() Fixes Bug #80915 --- ext/standard/info.c | 2 +- ext/standard/tests/bug80915.phpt | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/bug80915.phpt diff --git a/ext/standard/info.c b/ext/standard/info.c index 8e21d77f137c7..245ffe026805b 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -176,7 +176,7 @@ static ZEND_COLD void php_print_gpcse_array(char *name, uint32_t name_length) key = zend_string_init(name, name_length, 0); zend_is_auto_global(key); - if ((data = zend_hash_find(&EG(symbol_table), key)) != NULL && (Z_TYPE_P(data) == IS_ARRAY)) { + if ((data = zend_hash_find_deref(&EG(symbol_table), key)) != NULL && (Z_TYPE_P(data) == IS_ARRAY)) { ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(data), num_key, string_key, tmp) { if (!sapi_module.phpinfo_as_text) { php_info_print(""); diff --git a/ext/standard/tests/bug80915.phpt b/ext/standard/tests/bug80915.phpt new file mode 100644 index 0000000000000..5b6c000176391 --- /dev/null +++ b/ext/standard/tests/bug80915.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #80915: Taking a reference to $_SERVER hides its values from phpinfo() +--FILE-- + 'test' ]; + +$reference =& $_SERVER; + +phpinfo(INFO_VARIABLES); + +?> +--EXPECT-- +phpinfo() + +PHP Variables + +Variable => Value +$_SERVER['test'] => test