From: Dmitry Stogov Date: Mon, 5 Mar 2018 22:00:14 +0000 (+0300) Subject: Merge branch 'PHP-7.1' into PHP-7.2 X-Git-Tag: php-7.2.4RC1~27 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b48d2f6d10c73aca9b77894e5c94ab580fe703d2;p=php Merge branch 'PHP-7.1' into PHP-7.2 * PHP-7.1: Don't keep HashTable.pDestructor in SHM and always set it into ZVAL_PTR_DTOR in zval_array_dup(). Keeping pointer to a function in SHM is not safe because of ASLR. --- b48d2f6d10c73aca9b77894e5c94ab580fe703d2 diff --cc Zend/zend_hash.c index 0a7de61c9b,dc44383855..f1b0c9b86c --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@@ -1761,10 -1762,10 +1761,10 @@@ ZEND_API HashTable* ZEND_FASTCALL zend_ ALLOC_HASHTABLE(target); GC_REFCOUNT(target) = 1; - GC_TYPE_INFO(target) = IS_ARRAY; + GC_TYPE_INFO(target) = IS_ARRAY | (GC_COLLECTABLE << GC_FLAGS_SHIFT); target->nTableSize = source->nTableSize; - target->pDestructor = source->pDestructor; + target->pDestructor = ZVAL_PTR_DTOR; if (source->nNumUsed == 0) { target->u.flags = (source->u.flags & ~(HASH_FLAG_INITIALIZED|HASH_FLAG_PACKED|HASH_FLAG_PERSISTENT|ZEND_HASH_APPLY_COUNT_MASK)) | HASH_FLAG_APPLY_PROTECTION | HASH_FLAG_STATIC_KEYS;