summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2003-04-20 14:18:15 +0000
committerStanislav Malyshev <stas@php.net>2003-04-20 14:18:15 +0000
commitfaafbd6edd95e77197f4f9a3eaec9600518baa66 (patch)
tree1aee1d6da3d0f2ab6b1b05d0d13eb9512d8f038c /Zend/zend_builtin_functions.c
parentac33bc48f087536ba40c7808c920d2453c36d1c5 (diff)
downloadphp-git-faafbd6edd95e77197f4f9a3eaec9600518baa66.tar.gz
Fix for bug #21094 (set_error_handler can not accept methods),
by Timm Friebe
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index bb26526e10..baeae401ef 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -968,12 +968,20 @@ ZEND_FUNCTION(set_error_handler)
{
zval **error_handler;
zend_bool had_orig_error_handler=0;
-
+ char *error_handler_name;
+
if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &error_handler)==FAILURE) {
ZEND_WRONG_PARAM_COUNT();
}
- convert_to_string_ex(error_handler);
+ if (!zend_is_callable(*error_handler, 0, &error_handler_name)) {
+ zend_error(E_WARNING, "%s() expects the argument (%s) to be a valid callback",
+ get_active_function_name(TSRMLS_C), error_handler_name);
+ efree(error_handler_name);
+ return;
+ }
+ efree(error_handler_name);
+
if (EG(user_error_handler)) {
had_orig_error_handler = 1;
*return_value = *EG(user_error_handler);