diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2019-11-26 10:19:27 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2019-11-27 09:32:16 +0100 |
commit | fee38633d2f81a1bc9c14093e017319b1cd6a2cf (patch) | |
tree | 31e1835700bb35ba2d0c17d31218864e7ec675dd /ext/standard/string.c | |
parent | 23c65a817390d219bbe77f363cf14956c5c7119b (diff) | |
download | php-git-fee38633d2f81a1bc9c14093e017319b1cd6a2cf.tar.gz |
Fix #78840: imploding $GLOBALS crashes
We add support for IS_INDIRECT zvals to implode().
Diffstat (limited to 'ext/standard/string.c')
-rw-r--r-- | ext/standard/string.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index 0bb4d3a0a9..55c3f395d3 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1216,14 +1216,14 @@ PHPAPI void php_implode(const zend_string *glue, zval *pieces, zval *return_valu RETURN_EMPTY_STRING(); } else if (numelems == 1) { /* loop to search the first not undefined element... */ - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(pieces), tmp) { + ZEND_HASH_FOREACH_VAL_IND(Z_ARRVAL_P(pieces), tmp) { RETURN_STR(zval_get_string(tmp)); } ZEND_HASH_FOREACH_END(); } ptr = strings = do_alloca((sizeof(*strings)) * numelems, use_heap); - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(pieces), tmp) { + ZEND_HASH_FOREACH_VAL_IND(Z_ARRVAL_P(pieces), tmp) { if (EXPECTED(Z_TYPE_P(tmp) == IS_STRING)) { ptr->str = Z_STR_P(tmp); len += ZSTR_LEN(ptr->str); |