]> granicus.if.org Git - php/commitdiff
MFH: Fixed a possible crash when callback function returns a non-modified
authorIlia Alshanetsky <iliaa@php.net>
Fri, 3 Nov 2006 13:53:24 +0000 (13:53 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Fri, 3 Nov 2006 13:53:24 +0000 (13:53 +0000)
value

ext/filter/callback_filter.c

index d0f6708fbfe9d5607717d22a5652f789c417cf87..a825a5dc38269bec9b3a4b7585712f49be4e2171 100644 (file)
@@ -39,9 +39,10 @@ void php_filter_callback(PHP_INPUT_FILTER_PARAM_DECL)
        status = call_user_function_ex(EG(function_table), NULL, option_array, &retval_ptr, 1, args, 0, NULL TSRMLS_CC);
 
        if (status == SUCCESS && retval_ptr != NULL) {
-               zval_dtor(value);
-               *value = *retval_ptr;
-               zval_copy_ctor(value);
+               if (retval_ptr != value) {
+                       zval_dtor(value);
+                       COPY_PZVAL_TO_ZVAL(*value, retval_ptr);
+               }
        } else {
                zval_dtor(value);
                Z_TYPE_P(value) = IS_NULL;