Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_3) / zend_object_handlers.c /tests bug48248.phpt
[email protected] (Jani Taskinen) Wed, 13 May 2009 02:38:02 +0300
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <[email protected]> |
The code crashes also in PHP_5_2, so please MFH there too.
--Jani
Felipe Pena kirjoitti:
> felipe Tue May 12 22:55:06 2009 UTC
>
> Added files: (Branch: PHP_5_3)
> /ZendEngine2/tests bug48248.phpt
>
> Modified files:
> /ZendEngine2 zend_object_handlers.c
> Log:
> - MFH: Fixed bug #48248 (SIGSEGV when access to private property via &__get)
>
> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_object_handlers.c?r1=1.135.2.6.2.22.2.26&r2=1.135.2.6.2.22.2.27&diff_format=u
> Index: ZendEngine2/zend_object_handlers.c
> diff -u ZendEngine2/zend_object_handlers.c:1.135.2.6.2.22.2.26 ZendEngine2/zend_object_handlers.c:1.135.2.6.2.22.2.27
> --- ZendEngine2/zend_object_handlers.c:1.135.2.6.2.22.2.26 Wed Jan 14 10:28:22 2009
> +++ ZendEngine2/zend_object_handlers.c Tue May 12 22:55:05 2009
> @@ -17,7 +17,7 @@
> +----------------------------------------------------------------------+
> */
>
> -/* $Id: zend_object_handlers.c,v 1.135.2.6.2.22.2.26 2009/01/14 10:28:22 dmitry Exp $ */
> +/* $Id: zend_object_handlers.c,v 1.135.2.6.2.22.2.27 2009/05/12 22:55:05 felipe Exp $ */
>
> #include "zend.h"
> #include "zend_globals.h"
> @@ -578,8 +578,8 @@
> zend_guard *guard;
>
> if (!zobj->ce->__get ||
> - zend_get_property_guard(zobj, property_info, member, &guard) != SUCCESS ||
> - guard->in_get) {
> + zend_get_property_guard(zobj, property_info, member, &guard) != SUCCESS ||
> + (property_info && guard->in_get)) {
> /* we don't have access controls - will just add it */
> new_zval = &EG(uninitialized_zval);
>
>
> http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug48248.phpt?view=markup&rev=1.1
> Index: ZendEngine2/tests/bug48248.phpt
> +++ ZendEngine2/tests/bug48248.phpt
> --TEST--
> Bug #48248 (SIGSEGV when access to private property via &__get)
> --FILE--
> <?php
>
> class A
> {
> public function & __get($name)
> {
> return $this->test;
> }
> }
>
> class B extends A
> {
> private $test;
> }
>
> $b = new B;
> var_dump($b->test);
>
> ?>
> --EXPECTF--
> Notice: Undefined property: B::$test in %s on line %d
>
> Notice: Only variable references should be returned by reference in %s on line %d
> NULL
>
>
>