Commit:    ecd9d7625098bfc0a14ffa1fc39535848e71fc80
Author:    David Soria Parra <d...@php.net>         Mon, 24 Jun 2013 15:38:48 
+0200
Parents:   9da4985bf2d532ed72fbd3a7d3390464692cce7a
Branches:  PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=ecd9d7625098bfc0a14ffa1fc39535848e71fc80

Log:
Fix #65108 (is_callable() triggers Fatal Error)

We have to check if the fcall info cache contains a pointer if we
use __call, otherwise we endup in a static lookup.

Bugs:
https://bugs.php.net/65108

Changed paths:
  M  NEWS
  M  Zend/zend_API.c


Diff:
diff --git a/NEWS b/NEWS
index 2df33bc..0a57834 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@ PHP                                                             
           NEWS
 - Core:
   . Fixed bug #65088 (Generated configure script is malformed on OpenBSD).
     (Adam)
+  . Fixed bug #65108 (is_callable() triggers Fatal Error). (David Soria Parra)
 
 OPcache
   . OPcache must be compatible with LiteSpeed SAPI (Dmitry)
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 56c7c24..439d809 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -2842,7 +2842,7 @@ static int zend_is_callable_check_func(int check_flags, 
zval *callable, zend_fca
                }
                if ((check_flags & IS_CALLABLE_CHECK_NO_ACCESS) == 0 &&
                    (fcc->calling_scope &&
-                    (fcc->calling_scope->__call ||
+                    ((fcc->calling_scope->__call && fcc->object_ptr) ||
                      fcc->calling_scope->__callstatic))) {
                        if (fcc->function_handler->op_array.fn_flags & 
ZEND_ACC_PRIVATE) {
                                if (!zend_check_private(fcc->function_handler, 
fcc->object_ptr ? Z_OBJCE_P(fcc->object_ptr) : EG(scope), lmname, mlen 
TSRMLS_CC)) {


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to