Skip to content

Commit bf9afc1

Browse files
committed
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Fix #81294: Segfault when removing a filter
2 parents 71879d3 + 1fa26ec commit bf9afc1

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
@@ -36,6 +36,9 @@ PHP NEWS
3636
(George Dietrich)
3737
. Fixed bug #74960 (Heap buffer overflow via str_repeat). (cmb, Dmitry)
3838

39+
- Streams:
40+
. Fixed bug #81294 (Segfault when removing a filter). (cmb)
41+
3942
29 Jul 2021, PHP 8.0.9
4043

4144
- 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
@@ -416,7 +416,7 @@ PHPAPI int _php_stream_filter_flush(php_stream_filter *filter, int finish)
416416
for(current = filter; current; current = current->next) {
417417
php_stream_filter_status_t status;
418418

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

0 commit comments

Comments
 (0)