]> granicus.if.org Git - php/commitdiff
add tests
authorAntony Dovgal <tony2001@php.net>
Mon, 11 Sep 2006 14:13:05 +0000 (14:13 +0000)
committerAntony Dovgal <tony2001@php.net>
Mon, 11 Sep 2006 14:13:05 +0000 (14:13 +0000)
Zend/tests/bug38779.phpt [new file with mode: 0644]
Zend/tests/bug38779_1.phpt [new file with mode: 0644]

diff --git a/Zend/tests/bug38779.phpt b/Zend/tests/bug38779.phpt
new file mode 100644 (file)
index 0000000..023a048
--- /dev/null
@@ -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
diff --git a/Zend/tests/bug38779_1.phpt b/Zend/tests/bug38779_1.phpt
new file mode 100644 (file)
index 0000000..a865323
--- /dev/null
@@ -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!"