summaryrefslogtreecommitdiff
path: root/ext/session/tests
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2020-01-20 22:22:02 -0800
committerStanislav Malyshev <stas@php.net>2020-01-20 22:46:29 -0800
commit25ec7eb3463f34a2be666c6785d1c6b3cc89575e (patch)
treefa292e6176eae262eac6dac4a91005e0f318765e /ext/session/tests
parent07bda97e765407bac9c37c9d4feb6aebb23434bd (diff)
parent5c90f8eb66cc8ad0e9377dcf46ad2252924dfb29 (diff)
downloadphp-git-25ec7eb3463f34a2be666c6785d1c6b3cc89575e.tar.gz
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2: Update NEWS Fix bug #79037 (global buffer-overflow in `mbfl_filt_conv_big5_wchar`) Fix #79099: OOB read in php_strip_tags_ex Fix #79091: heap use-after-free in session_create_id()
Diffstat (limited to 'ext/session/tests')
-rw-r--r--ext/session/tests/bug79091.phpt67
1 files changed, 67 insertions, 0 deletions
diff --git a/ext/session/tests/bug79091.phpt b/ext/session/tests/bug79091.phpt
new file mode 100644
index 0000000000..1d14427159
--- /dev/null
+++ b/ext/session/tests/bug79091.phpt
@@ -0,0 +1,67 @@
+--TEST--
+Bug #79091 (heap use-after-free in session_create_id())
+--SKIPIF--
+<?php
+if (!extension_loaded('session')) die('skip session extension not available');
+?>
+--FILE--
+<?php
+class MySessionHandler implements SessionHandlerInterface, SessionIdInterface, SessionUpdateTimestampHandlerInterface
+{
+ public function close()
+ {
+ return true;
+ }
+
+ public function destroy($session_id)
+ {
+ return true;
+ }
+
+ public function gc($maxlifetime)
+ {
+ return true;
+ }
+
+ public function open($save_path, $session_name)
+ {
+ return true;
+ }
+
+ public function read($session_id)
+ {
+ return '';
+ }
+
+ public function write($session_id, $session_data)
+ {
+ return true;
+ }
+
+ public function create_sid()
+ {
+ return uniqid();
+ }
+
+ public function updateTimestamp($key, $val)
+ {
+ return true;
+ }
+
+ public function validateId($key)
+ {
+ return false;
+ }
+}
+
+ob_start();
+var_dump(session_set_save_handler(new MySessionHandler()));
+var_dump(session_start());
+ob_flush();
+session_create_id();
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+
+Warning: session_create_id(): Failed to create new ID in %s on line %d