summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2017-05-17 22:42:18 +0800
committerXinchen Hui <laruence@gmail.com>2017-05-17 22:42:18 +0800
commite347b2ded6c9125c31e499a62c872d5cd600cae5 (patch)
treede7f6fb3f05285182f619be808f044a053cc112b
parent8a1713e39cf31f5c13839c8a6aeb784e365e1cd1 (diff)
downloadphp-git-e347b2ded6c9125c31e499a62c872d5cd600cae5.tar.gz
Added test for bug #74596
-rw-r--r--ext/opcache/tests/bug74596.phpt55
1 files changed, 55 insertions, 0 deletions
diff --git a/ext/opcache/tests/bug74596.phpt b/ext/opcache/tests/bug74596.phpt
new file mode 100644
index 0000000000..ed1c1b4504
--- /dev/null
+++ b/ext/opcache/tests/bug74596.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Bug #74596 (SIGSEGV with opcache.revalidate_path enabled)
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.file_update_protection=0
+opcache.validate_timestamps=0
+opcache.file_cache_only=0
+opcache.revalidate_path=1
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+file_put_contents(__DIR__ . "/bug74596_1.php", <<<CODE
+<?php
+class A {
+ public function __construct() {
+ \$a = true;
+ if (\$a) {
+ echo 1 + 2;
+ } else {
+ echo 2 + 3;
+ }
+ }
+}
+?>
+CODE
+);
+
+file_put_contents(__DIR__ . "/bug74596_2.php", "ok\n");
+
+class ufilter extends php_user_filter
+{
+ function filter($in, $out, &$consumed, $closing)
+ {
+ include_once __DIR__ . "/bug74596_1.php";
+ while ($bucket = stream_bucket_make_writeable($in)) {
+ stream_bucket_append($out, $bucket);
+ }
+ return PSFS_PASS_ON;
+ }
+}
+
+stream_filter_register("ufilter", "ufilter");
+
+include "php://filter/read=ufilter/resource=" . __DIR__ . "/bug74596_2.php";
+?>
+--CLEAN--
+<?php
+unlink(__DIR__ . "/bug74596_1.php");
+unlink(__DIR__ . "/bug74596_2.php");
+?>
+--EXPECT--
+ok