summaryrefslogtreecommitdiff
path: root/ext/fileinfo/tests
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2018-11-10 20:07:25 +0100
committerAnatol Belski <ab@php.net>2018-11-10 20:07:25 +0100
commitb50d93bc115d96100893a2b6d0c71756f0f8b9e1 (patch)
treeaf2b60c482150dacf9e2e24f0b719a26b8e34bc8 /ext/fileinfo/tests
parent0e38909170b92ae3da5efd18b7b92df52c80051d (diff)
parent3fd46e19ac3e8ef2950a65edef4c95fcd4c08242 (diff)
downloadphp-git-b50d93bc115d96100893a2b6d0c71756f0f8b9e1.tar.gz
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2: Fork test with pcre.jit=0
Diffstat (limited to 'ext/fileinfo/tests')
-rw-r--r--ext/fileinfo/tests/cve-2014-3538-nojit.phpt40
1 files changed, 40 insertions, 0 deletions
diff --git a/ext/fileinfo/tests/cve-2014-3538-nojit.phpt b/ext/fileinfo/tests/cve-2014-3538-nojit.phpt
new file mode 100644
index 0000000000..2dc5ddbc5e
--- /dev/null
+++ b/ext/fileinfo/tests/cve-2014-3538-nojit.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Bug #66731: file: extensive backtraking, with pcre.jit=0
+--SKIPIF--
+<?php
+if (defined("PHP_DEBUG") && PHP_DEBUG)
+ die("skip not suitable for debug build");
+if (!class_exists('finfo'))
+ die('skip no fileinfo extension');
+?>
+--INI--
+pcre.jit=0
+--FILE--
+<?php
+$fd = __DIR__.'/cve-2014-3538.data';
+
+file_put_contents($fd,
+ 'try:' .
+ str_repeat("\n", 1000000));
+
+$fi = finfo_open(FILEINFO_NONE);
+$t = microtime(true);
+var_dump(finfo_file($fi, $fd));
+$t = microtime(true) - $t;
+finfo_close($fi);
+if ($t < 1) {
+ echo "Ok\n";
+} else {
+ printf("Failed, time=%.2f\n", $t);
+}
+
+?>
+Done
+--CLEAN--
+<?php
+@unlink(__DIR__.'/cve-2014-3538.data');
+?>
+--EXPECTF--
+string(%d) "%s"
+Ok
+Done