1
0
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:
Nikita Popov
2020-11-12 12:18:49 +01:00
2 changed files with 26 additions and 1 deletions
@@ -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"
+2 -1
View File
@@ -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));