mirror of
https://github.com/php/php-src.git
synced 2026-04-27 18:23:26 +02:00
MFB51: Fixed bug #35916 (Duplicate calls to stream_bucket_append() lead to
a crash).
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
Bug #35916 (Duplicate calls to stream_bucket_append() lead to a crash)
|
||||
--FILE--
|
||||
<?php
|
||||
$file = dirname(__FILE__) . "/bug35916.txt";
|
||||
@unlink($file);
|
||||
|
||||
class strtoupper_filter extends php_user_filter
|
||||
{
|
||||
function filter($in, $out, &$consumed, $closing)
|
||||
{
|
||||
while($bucket=stream_bucket_make_writeable($in)) {
|
||||
$bucket->data = strtoupper($bucket->data);
|
||||
$consumed += $bucket->datalen;
|
||||
stream_bucket_append($out, $bucket);
|
||||
stream_bucket_append($out, $bucket);
|
||||
}
|
||||
return PSFS_PASS_ON;
|
||||
}
|
||||
function onCreate()
|
||||
{
|
||||
echo "fffffffffff\n";
|
||||
}
|
||||
function onClose()
|
||||
{
|
||||
echo "hello\n";
|
||||
}
|
||||
}
|
||||
|
||||
stream_filter_register("strtoupper", "strtoupper_filter");
|
||||
$fp=fopen($file, "w");
|
||||
stream_filter_append($fp, "strtoupper");
|
||||
fread($fp, 1024);
|
||||
fwrite($fp, "Thank you\n");
|
||||
fclose($fp);
|
||||
readfile($file);
|
||||
unlink($file);
|
||||
?>
|
||||
--EXPECT--
|
||||
fffffffffff
|
||||
hello
|
||||
THANK YOU
|
||||
@@ -273,6 +273,10 @@ PHPAPI void php_stream_bucket_prepend(php_stream_bucket_brigade *brigade, php_st
|
||||
|
||||
PHPAPI void php_stream_bucket_append(php_stream_bucket_brigade *brigade, php_stream_bucket *bucket TSRMLS_DC)
|
||||
{
|
||||
if (brigade->tail == bucket) {
|
||||
return;
|
||||
}
|
||||
|
||||
bucket->prev = brigade->tail;
|
||||
bucket->next = NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user