diff options
author | Andrei Zmievski <andrei@php.net> | 2001-08-04 16:54:20 +0000 |
---|---|---|
committer | Andrei Zmievski <andrei@php.net> | 2001-08-04 16:54:20 +0000 |
commit | bffbe675f939ff6da54e10f2361c4fbae1344e52 (patch) | |
tree | 4a8bfd93fc11e8c699ca423220f1c1fd7edd6754 | |
parent | 3884b15b9544f6d9d749d14d2b0cad9eca29a201 (diff) | |
download | php-git-bffbe675f939ff6da54e10f2361c4fbae1344e52.tar.gz |
@- Fixed a crash bug in array_map() when NULL callback was passed in. (Andrei)
-rw-r--r-- | ext/standard/array.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 3a85caeb63..f18621ad1d 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3010,14 +3010,15 @@ PHP_FUNCTION(array_map) } callback = *args[0]; - if (Z_TYPE_P(callback) != IS_NULL && !zend_is_callable(callback, 0, &callback_name)) { - php_error(E_WARNING, "%s() expects argument 1, '%s', to be either NULL or a valid callback", - get_active_function_name(TSRMLS_C), callback_name); + if (Z_TYPE_P(callback) != IS_NULL) { + if (!zend_is_callable(callback, 0, &callback_name)) { + php_error(E_WARNING, "%s() expects argument 1, '%s', to be either NULL or a valid callback", get_active_function_name(TSRMLS_C), callback_name); + efree(callback_name); + efree(args); + return; + } efree(callback_name); - efree(args); - return; } - efree(callback_name); /* Cache array sizes. */ array_len = (int*)emalloc((ZEND_NUM_ARGS()-1) * sizeof(int)); |