Skip to content

Commit 1fa26ec

Browse files
committed
Fix #81294: Segfault when removing a filter
We need to call the proper method. Closes GH-7308.
1 parent 387c0de commit 1fa26ec

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ PHP NEWS
2222
(George Dietrich)
2323
. Fixed bug #74960 (Heap buffer overflow via str_repeat). (cmb, Dmitry)
2424

25+
- Streams:
26+
. Fixed bug #81294 (Segfault when removing a filter). (cmb)
27+
2528
29 Jul 2021, PHP 7.4.22
2629

2730
- Core:
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
--TEST--
2+
Bug #81294 (Segfault when removing a filter)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('zlib')) die("skip zlib extension not available");
6+
?>
7+
--FILE--
8+
<?php
9+
$f = fopen(__DIR__ . "/bug81294.txt", "wb+");
10+
$flt1 = stream_filter_append($f, "zlib.deflate", STREAM_FILTER_WRITE);
11+
$flt2 = stream_filter_append($f, "string.rot13", STREAM_FILTER_WRITE);
12+
fwrite($f, "test");
13+
stream_filter_remove($flt1);
14+
fwrite($f, "test");
15+
stream_filter_remove($flt2);
16+
rewind($f);
17+
var_dump(urlencode(fread($f, 1024)));
18+
?>
19+
--CLEAN--
20+
<?php
21+
@unlink(__DIR__ . "/bug81294.txt");
22+
?>
23+
--EXPECT--
24+
string(16) "%2BV-.%01%00grfg"

main/streams/filter.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ PHPAPI int _php_stream_filter_flush(php_stream_filter *filter, int finish)
418418
for(current = filter; current; current = current->next) {
419419
php_stream_filter_status_t status;
420420

421-
status = filter->fops->filter(stream, current, inp, outp, NULL, flags);
421+
status = current->fops->filter(stream, current, inp, outp, NULL, flags);
422422
if (status == PSFS_FEED_ME) {
423423
/* We've flushed the data far enough */
424424
return SUCCESS;

0 commit comments

Comments
 (0)