From: Felipe Pena Date: Sat, 17 Sep 2011 00:16:11 +0000 (+0000) Subject: - Fixed bug #55705 (Omitting a callable typehinted argument causes a segfault) X-Git-Tag: php-5.5.0alpha1~1114 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0ebd2309b1684b38be613d7b8e377cb6e461ea11;p=php - Fixed bug #55705 (Omitting a callable typehinted argument causes a segfault) patch by: laruence@php --- diff --git a/Zend/tests/bug55705.phpt b/Zend/tests/bug55705.phpt new file mode 100644 index 0000000000..69220bfdeb --- /dev/null +++ b/Zend/tests/bug55705.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #55705 (Omitting a callable typehinted argument causes a segfault) +--FILE-- + +--EXPECTF-- +Catchable fatal error: Argument 1 passed to f() must be callable, none given, called in %s on line 3 and defined in %s on line %d diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 20d21402ed..e24a3dd6f2 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -639,6 +639,9 @@ static inline int zend_verify_arg_type(zend_function *zf, zend_uint arg_num, zva break; case IS_CALLABLE: + if (!arg) { + return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be callable", "", "none", "" TSRMLS_CC); + } if (!zend_is_callable(arg, IS_CALLABLE_CHECK_SILENT, NULL TSRMLS_CC) && (Z_TYPE_P(arg) != IS_NULL || !cur_arg_info->allow_null)) { return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be callable", "", zend_zval_type_name(arg), "" TSRMLS_CC); }