bug78406.phpt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. --TEST--
  2. Bug #78406: Broken file includes with user-defined stream filters
  3. --FILE--
  4. <?php
  5. echo "bug\n"; // Should be transformed by filter on second include
  6. if (!class_exists(SampleFilter::class)) {
  7. class SampleFilter extends php_user_filter
  8. {
  9. private $data = '';
  10. public function filter($in, $out, &$consumed, $closing): int
  11. {
  12. while ($bucket = stream_bucket_make_writeable($in))
  13. {
  14. $this->data .= $bucket->data;
  15. }
  16. if ($closing || feof($this->stream))
  17. {
  18. $consumed = strlen($this->data);
  19. $this->data = str_replace('bug', 'feature', $this->data);
  20. $bucket = stream_bucket_new($this->stream, $this->data);
  21. stream_bucket_append($out, $bucket);
  22. return PSFS_PASS_ON;
  23. }
  24. return PSFS_FEED_ME;
  25. }
  26. }
  27. stream_filter_register('sample.filter', SampleFilter::class);
  28. $uri = 'php://filter/read=sample.filter/resource='. __FILE__;
  29. include $uri; // We expect one more "feature" output at line 3
  30. }
  31. ?>
  32. --EXPECT--
  33. bug
  34. feature