mirror of
https://github.com/php/php-src.git
synced 2026-04-25 00:48:25 +02:00
Merge branch 'PHP-8.0'
* PHP-8.0: Fix memory leak when user filter onCreate returns false
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
php_user_filter onCreate() returns false
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class my_filter extends php_user_filter {
|
||||
function onCreate() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
stream_filter_register("my_filter", "my_filter");
|
||||
$fp = fopen('php://memory', 'rw');
|
||||
var_dump(stream_filter_append($fp, "my_filter"));
|
||||
fwrite($fp, "Test");
|
||||
fseek($fp, 0);
|
||||
var_dump(fgets($fp));
|
||||
fclose($fp);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: stream_filter_append(): Unable to create or locate filter "my_filter" in %s on line %d
|
||||
bool(false)
|
||||
string(4) "Test"
|
||||
@@ -342,6 +342,8 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,
|
||||
&retval,
|
||||
0, NULL);
|
||||
|
||||
zval_ptr_dtor(&func_name);
|
||||
|
||||
if (Z_TYPE(retval) != IS_UNDEF) {
|
||||
if (Z_TYPE(retval) == IS_FALSE) {
|
||||
/* User reported filter creation error "return false;" */
|
||||
@@ -359,7 +361,6 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,
|
||||
}
|
||||
zval_ptr_dtor(&retval);
|
||||
}
|
||||
zval_ptr_dtor(&func_name);
|
||||
|
||||
/* set the filter property, this will be used during cleanup */
|
||||
ZVAL_RES(&zfilter, zend_register_resource(filter, le_userfilters));
|
||||
|
||||
Reference in New Issue
Block a user