1
0
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:
Nikita Popov
2013-01-30 20:23:39 +01:00
parent ec53b60072
commit 321f4f18e5
4 changed files with 28 additions and 2 deletions
+3
View File
@@ -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
View File
@@ -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) {
+5 -1
View File
@@ -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) {
+15
View File
@@ -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