diff options
author | Xinchen Hui <laruence@php.net> | 2014-10-31 17:32:23 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2014-10-31 17:32:23 +0800 |
commit | d9d181e5ad41128a97a6e01d14fb766ff7bf31a8 (patch) | |
tree | 1c8bd5be9c8b0ba70fd4c0a4d0651b8e16e20739 /Zend/zend_API.c | |
parent | 9e1da42af18265d007b5246f01895d3cafc78939 (diff) | |
download | php-git-d9d181e5ad41128a97a6e01d14fb766ff7bf31a8.tar.gz |
Fixed Bug #68104 (Segfault while pre-evaluating a disabled function)
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r-- | Zend/zend_API.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 8472cd7ab1..a465721f1f 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2635,18 +2635,15 @@ ZEND_API ZEND_FUNCTION(display_disabled_function) } /* }}} */ -static zend_function_entry disabled_function[] = { - ZEND_FE(display_disabled_function, NULL) - ZEND_FE_END -}; - ZEND_API int zend_disable_function(char *function_name, uint function_name_length TSRMLS_DC) /* {{{ */ { - if (zend_hash_del(CG(function_table), function_name, function_name_length+1)==FAILURE) { - return FAILURE; + zend_internal_function *func; + if (zend_hash_find(CG(function_table), function_name, function_name_length+1, (void **)&func)==SUCCESS) { + func->arg_info = NULL; + func->handler = ZEND_FN(display_disabled_function); + return SUCCESS; } - disabled_function[0].fname = function_name; - return zend_register_functions(NULL, disabled_function, CG(function_table), MODULE_PERSISTENT TSRMLS_CC); + return FAILURE; } /* }}} */ |