mirror of
https://github.com/php/php-src.git
synced 2026-04-28 02:33:17 +02:00
Fixed bug #64106: Segfault on SplFixedArray[][x] = y when extended
This commit is contained in:
@@ -17,6 +17,9 @@ PHP NEWS
|
||||
- FPM:
|
||||
. Fixed bug #63999 (php with fpm fails to build on Solaris 10 or 11). (Adam)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #64106 (Segfault on SplFixedArray[][x] = y when extended). (Nikita Popov)
|
||||
|
||||
17 Jan 2013, PHP 5.3.21
|
||||
|
||||
- Zend Engine:
|
||||
|
||||
+5
-1
@@ -387,7 +387,11 @@ static zval *spl_array_read_dimension_ex(int check_inherited, zval *object, zval
|
||||
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
|
||||
if (intern->fptr_offset_get) {
|
||||
zval *rv;
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
if (!offset) {
|
||||
ALLOC_INIT_ZVAL(offset);
|
||||
} else {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
}
|
||||
zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_get, "offsetGet", &rv, offset);
|
||||
zval_ptr_dtor(&offset);
|
||||
if (rv) {
|
||||
|
||||
@@ -361,7 +361,11 @@ static zval *spl_fixedarray_object_read_dimension(zval *object, zval *offset, in
|
||||
|
||||
if (intern->fptr_offset_get) {
|
||||
zval *rv;
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
if (!offset) {
|
||||
ALLOC_INIT_ZVAL(offset);
|
||||
} else {
|
||||
SEPARATE_ARG_IF_REF(offset);
|
||||
}
|
||||
zend_call_method_with_1_params(&object, intern->std.ce, &intern->fptr_offset_get, "offsetGet", &rv, offset);
|
||||
zval_ptr_dtor(&offset);
|
||||
if (rv) {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
Bug #64106: Segfault on SplFixedArray[][x] = y when extended
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class MyFixedArray extends SplFixedArray {
|
||||
public function offsetGet($offset) {}
|
||||
}
|
||||
|
||||
$array = new MyFixedArray(10);
|
||||
$array[][1] = 10;
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: Indirect modification of overloaded element of MyFixedArray has no effect in %s on line %d
|
||||
Reference in New Issue
Block a user