mirror of
https://github.com/php/php-src.git
synced 2026-04-29 11:13:36 +02:00
Fixed a potential segfault in zend_objects_store_free_object_storage()
Under the special circumstance where a garbage collected objects bucket slot was not reused until the end of the script, we get access into freed memory... No test added as it usually is valgrind-only, and only sometimes when the memory happens to have changed (i.e. (GC_FLAGS(obj) & IS_OBJ_FREE_CALLED) == 0), it actually *may* segfault
This commit is contained in:
@@ -20,6 +20,8 @@ PHP NEWS
|
||||
phpize). (Yuji Uchiyama)
|
||||
. Fixed bug #72641 (phpize (on Windows) ignores PHP_PREFIX).
|
||||
(Yuji Uchiyama)
|
||||
. Fixed potential segfault in object storage freeing in shutdown sequence.
|
||||
(Bob)
|
||||
|
||||
- COM:
|
||||
. Fixed bug #72569 (DOTNET/COM array parameters broke in PHP7). (Anatol)
|
||||
|
||||
@@ -1097,6 +1097,7 @@ ZEND_API int zend_gc_collect_cycles(void)
|
||||
|
||||
if (EG(objects_store).object_buckets &&
|
||||
IS_OBJ_VALID(EG(objects_store).object_buckets[obj->handle])) {
|
||||
EG(objects_store).object_buckets[obj->handle] = SET_OBJ_INVALID(obj);
|
||||
GC_TYPE(obj) = IS_NULL;
|
||||
if (!(GC_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
|
||||
GC_FLAGS(obj) |= IS_OBJ_FREE_CALLED;
|
||||
|
||||
Reference in New Issue
Block a user