tony2001 Wed Mar 22 21:56:40 2006 UTC
Modified files: (Branch: PHP_5_1)
/php-src/ext/spl spl_array.c
/php-src NEWS
Log:
fix #36825 (Exceptions thrown in ArrayObject::offsetGet cause segfault)
fix similar issue in offsetExists()
remove redundant semicolons
http://cvs.php.net/viewcvs.cgi/php-src/ext/spl/spl_array.c?r1=1.71.2.10&r2=1.71.2.11&diff_format=u
Index: php-src/ext/spl/spl_array.c
diff -u php-src/ext/spl/spl_array.c:1.71.2.10
php-src/ext/spl/spl_array.c:1.71.2.11
--- php-src/ext/spl/spl_array.c:1.71.2.10 Sun Mar 5 17:39:49 2006
+++ php-src/ext/spl/spl_array.c Wed Mar 22 21:56:39 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_array.c,v 1.71.2.10 2006/03/05 17:39:49 helly Exp $ */
+/* $Id: spl_array.c,v 1.71.2.11 2006/03/22 21:56:39 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -262,7 +262,11 @@
zend_call_method_with_1_params(&object,
Z_OBJCE_P(object), &intern->fptr_offset_get, "offsetGet", &rv, offset);
zval_ptr_dtor(&intern->retval);
MAKE_STD_ZVAL(intern->retval);
- ZVAL_ZVAL(intern->retval, rv, 1, 1);
+ if (rv) {
+ ZVAL_ZVAL(intern->retval, rv, 1, 1);
+ } else {
+ ZVAL_NULL(intern->retval);
+ }
return intern->retval;
}
}
@@ -390,11 +394,13 @@
if (check_inherited && intern->fptr_offset_has) {
zend_call_method_with_1_params(&object, Z_OBJCE_P(object),
&intern->fptr_offset_has, "offsetExists", &rv, offset);
- if (zend_is_true(rv)) {
+ if (rv && zend_is_true(rv)) {
zval_ptr_dtor(&rv);
return 1;
}
- zval_ptr_dtor(&rv);
+ if (rv) {
+ zval_ptr_dtor(&rv);
+ }
return 0;
}
@@ -1207,43 +1213,43 @@
static
ZEND_BEGIN_ARG_INFO(arginfo_array___construct, 0)
ZEND_ARG_INFO(0, array)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetGet, 0, 0, 1)
ZEND_ARG_INFO(0, index)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetSet, 0, 0, 2)
ZEND_ARG_INFO(0, index)
ZEND_ARG_INFO(0, newval)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_append, 0)
ZEND_ARG_INFO(0, value)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_seek, 0)
ZEND_ARG_INFO(0, position)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_exchangeArray, 0)
ZEND_ARG_INFO(0, array)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_setFlags, 0)
ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_setIteratorClass, 0)
ZEND_ARG_INFO(0, iteratorClass)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static zend_function_entry spl_funcs_ArrayObject[] = {
SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC)
http://cvs.php.net/viewcvs.cgi/php-src/NEWS?r1=1.2027.2.477&r2=1.2027.2.478&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.477 php-src/NEWS:1.2027.2.478
--- php-src/NEWS:1.2027.2.477 Wed Mar 22 09:45:39 2006
+++ php-src/NEWS Wed Mar 22 21:56:40 2006
@@ -10,6 +10,8 @@
(also fixes bug #36764). (Tony)
- Removed the E_STRICT deprecation notice from "var". (Ilia)
- Fixed debug_zval_dump() to support private and protected members. (Dmitry)
+- Fixed bug #36825 (Exceptions thrown in ArrayObject::offsetGet cause
+ segfault). (Tony)
- Fixed bug #36820 (Privileged connection with an Oracle password file fails).
(Tony)
- Fixed bug #36809 (__FILE__ behavior changed). (Dmitry)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php