mirror of
https://github.com/php/php-src.git
synced 2024-12-26 02:10:46 +08:00
29b28f7ce6
this could leave garbage after it as the test file is removed in flush (the fd could still be opened)
54 lines
1.2 KiB
PHP
54 lines
1.2 KiB
PHP
--TEST--
|
|
Bug #38779 (engine crashes when require()'ing file with syntax error through userspace stream wrapper)
|
|
--FILE--
|
|
<?php
|
|
|
|
class Loader {
|
|
private $position;
|
|
private $data;
|
|
public function stream_open($path, $mode, $options, &$opened_path) {
|
|
$this->data = '<' . "?php \n\"\";ll l\n ?" . '>';
|
|
$this->position = 0;
|
|
return true;
|
|
}
|
|
function stream_read($count) {
|
|
$ret = substr($this->data, $this->position, $count);
|
|
$this->position += strlen($ret);
|
|
return $ret;
|
|
}
|
|
function stream_eof() {
|
|
return $this->position >= strlen($this->data);
|
|
}
|
|
function stream_flush() {
|
|
@unlink(dirname(__FILE__)."/bug38779.txt");
|
|
var_dump("flush!");
|
|
}
|
|
function stream_close() {
|
|
var_dump("close!");
|
|
}
|
|
}
|
|
stream_wrapper_register('Loader', 'Loader');
|
|
$fp = fopen ('Loader://qqq.php', 'r');
|
|
|
|
$filename = dirname(__FILE__)."/bug38779.txt";
|
|
$fp1 = fopen($filename, "w");
|
|
fwrite($fp1, "<"."?php blah blah?".">");
|
|
fclose($fp1);
|
|
|
|
include $filename;
|
|
|
|
echo "Done\n";
|
|
?>
|
|
--CLEAN--
|
|
<?php
|
|
|
|
$filename = dirname(__FILE__)."/bug38779.txt";
|
|
if (file_exists($filename)) {
|
|
@unlink(dirname(__FILE__)."/bug38779.txt");
|
|
}
|
|
?>
|
|
--EXPECTF--
|
|
Parse error: %s error%sin %s on line %d
|
|
string(6) "flush!"
|
|
string(6) "close!"
|