Skip to content

Commit 8a03fd6

Browse files
committed
Merge branch 'PHP-7.2' into PHP-7.3
2 parents 2624c9a + 19e6abe commit 8a03fd6

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--TEST--
2+
Creating the stream filter object may fail
3+
--FILE--
4+
<?php
5+
class SampleFilter extends php_user_filter {
6+
private $data = \FOO;
7+
}
8+
stream_filter_register('sample.filter', SampleFilter::class);
9+
try {
10+
var_dump(file_get_contents('php://filter/read=sample.filter/resource='. __FILE__));
11+
} catch (Error $e) {
12+
echo $e->getMessage(), "\n";
13+
}
14+
?>
15+
--EXPECTF--
16+
Warning: file_get_contents(): unable to create or locate filter "sample.filter" in %s on line %d
17+
18+
Warning: file_get_contents(): Unable to create filter (sample.filter) in %s on line %d
19+
Undefined constant 'FOO'

ext/standard/user_filters.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -320,14 +320,17 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,
320320
}
321321
}
322322

323+
/* create the object */
324+
if (object_init_ex(&obj, fdat->ce) == FAILURE) {
325+
return NULL;
326+
}
327+
323328
filter = php_stream_filter_alloc(&userfilter_ops, NULL, 0);
324329
if (filter == NULL) {
330+
zval_ptr_dtor(&obj);
325331
return NULL;
326332
}
327333

328-
/* create the object */
329-
object_init_ex(&obj, fdat->ce);
330-
331334
/* filtername */
332335
add_property_string(&obj, "filtername", (char*)filtername);
333336

0 commit comments

Comments
 (0)