diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index 9f83fa991d4d..abda7e5a78c9 100644 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -689,12 +689,15 @@ PHP_METHOD(Phar, webPhar) rewrite_fci.retval = &retval; if (FAILURE == zend_call_function(&rewrite_fci, &rewrite_fcc)) { + zval_ptr_dtor_str(¶ms); if (!EG(exception)) { zend_throw_exception_ex(phar_ce_PharException, 0, "phar error: failed to call rewrite callback"); } goto cleanup_fail; } + zval_ptr_dtor_str(¶ms); + if (Z_TYPE_P(rewrite_fci.retval) == IS_UNDEF || Z_TYPE(retval) == IS_UNDEF) { zend_throw_exception_ex(phar_ce_PharException, 0, "phar error: rewrite callback must return a string or false"); goto cleanup_fail; @@ -720,7 +723,6 @@ PHP_METHOD(Phar, webPhar) zend_throw_exception_ex(phar_ce_PharException, 0, "phar error: rewrite callback must return a string or false"); cleanup_fail: - zval_ptr_dtor(¶ms); if (free_pathinfo) { efree(path_info); }