cvs: ZendEngine2(PHP_5_3) / zend_execute_API.c /tests bug47572.phpt
[email protected] ("Felipe Pena") Thu, 05 Mar 2009 16:25:43 -0000
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <cvsfelipe1236270343@cvsserver> |
felipe Thu Mar 5 16:25:43 2009 UTC
Added files: (Branch: PHP_5_3)
/ZendEngine2/tests bug47572.phpt
Modified files:
/ZendEngine2 zend_execute_API.c
Log:
- MFH: Fixed bug #47572 (zval_update_constant_ex: Segmentation fault)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute_API.c?r1=1.331.2.20.2.24.2.70&r2=1.331.2.20.2.24.2.71&diff_format=u
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.70 ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.71
--- ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.70 Mon Feb 9 09:20:35 2009
+++ ZendEngine2/zend_execute_API.c Thu Mar 5 16:25:43 2009
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.70 2009/02/09 09:20:35 dmitry Exp $ */
+/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.71 2009/03/05 16:25:43 felipe Exp $ */
#include <stdio.h>
#include <signal.h>
@@ -575,7 +575,7 @@
} else if (Z_TYPE_P(p) == IS_CONSTANT_ARRAY) {
zval **element, *new_val;
char *str_index;
- uint str_index_len;
+ uint str_index_len = 0;
ulong num_index;
int ret;
@@ -613,9 +613,11 @@
str_index = colon;
} else {
if (str_index[str_index_len - 2] & IS_CONSTANT_UNQUALIFIED) {
- actual = (char *)zend_memrchr(str_index, '\\', str_index_len - 3) + 1;
+ if ((actual = (char *)zend_memrchr(str_index, '\\', str_index_len - 3))) {
+ actual++;
str_index_len -= (actual - str_index);
- str_index = actual;
+ str_index = save;
+ }
}
if (str_index[0] == '\\') {
++str_index;
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug47572.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/bug47572.phpt
+++ ZendEngine2/tests/bug47572.phpt
--TEST--
Bug #47572 (zval_update_constant_ex: Segmentation fault)
--FILE--
<?php
class Foo {
public static $bar = array(
FOO => "bar"
);
}
$foo = new Foo();
?>
--EXPECTF--
Notice: Use of undefined constant FOO - assumed 'FOO' in %s on line %d