mirror of
https://github.com/php/php-src.git
synced 2025-08-20 17:34:35 +02:00
add tests
This commit is contained in:
parent
65c046b200
commit
5a9f40a46a
2 changed files with 74 additions and 0 deletions
29
Zend/tests/bug38779.phpt
Normal file
29
Zend/tests/bug38779.phpt
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
--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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stream_wrapper_register('Loader', 'Loader');
|
||||||
|
require 'Loader://qqq.php';
|
||||||
|
|
||||||
|
echo "Done\n";
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
Parse error: syntax error, unexpected T_STRING in Loader://qqq.php on line %d
|
45
Zend/tests/bug38779_1.phpt
Normal file
45
Zend/tests/bug38779_1.phpt
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
--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";
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
Parse error: syntax error, unexpected T_STRING in %s on line %d
|
||||||
|
string(6) "flush!"
|
||||||
|
string(6) "close!"
|
Loading…
Add table
Add a link
Reference in a new issue