]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.1' into PHP-7.2
authorDmitry Stogov <dmitry@zend.com>
Mon, 5 Mar 2018 22:00:14 +0000 (01:00 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 5 Mar 2018 22:00:14 +0000 (01:00 +0300)
* 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.

1  2 
Zend/zend_hash.c
ext/opcache/zend_persist.c

index 0a7de61c9b95b87eef53519c4a20831bcca2717b,dc44383855340974afb9065b04ff419b69a41fd7..f1b0c9b86cea5166a88f0ee4fbaf6e76cb728c49
@@@ -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;
Simple merge