xref: /PHP-7.4/ext/session/tests/bug79091.phpt (revision b510250b)
1--TEST--
2Bug #79091 (heap use-after-free in session_create_id())
3--SKIPIF--
4<?php
5if (!extension_loaded('session')) die('skip session extension not available');
6?>
7--FILE--
8<?php
9class MySessionHandler implements SessionHandlerInterface, SessionIdInterface, SessionUpdateTimestampHandlerInterface
10{
11    public function close()
12    {
13        return true;
14    }
15
16    public function destroy($session_id)
17    {
18        return true;
19    }
20
21    public function gc($maxlifetime)
22    {
23        return true;
24    }
25
26    public function open($save_path, $session_name)
27    {
28        return true;
29    }
30
31    public function read($session_id)
32    {
33        return '';
34    }
35
36    public function write($session_id, $session_data)
37    {
38        return true;
39    }
40
41    public function create_sid()
42    {
43        return uniqid();
44    }
45
46    public function updateTimestamp($key, $val)
47    {
48        return true;
49    }
50
51    public function validateId($key)
52    {
53        return true;
54    }
55}
56
57ob_start();
58var_dump(session_set_save_handler(new MySessionHandler()));
59var_dump(session_start());
60ob_flush();
61session_create_id();
62?>
63--EXPECTF--
64bool(true)
65bool(true)
66
67Warning: session_create_id(): Failed to create new ID in %s on line %d
68