File tree Expand file tree Collapse file tree 3 files changed +49
-1
lines changed Expand file tree Collapse file tree 3 files changed +49
-1
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,8 @@ PHP NEWS
21
21
- Session:
22
22
. Fixed GH-9584 (Avoid memory corruption when not unregistering custom session
23
23
handler). (ilutov)
24
+ . Fixed bug GH-9583 (session_create_id() fails with user defined save handler
25
+ that doesn't have a validateId() method). (Girgias)
24
26
25
27
- Standard:
26
28
. Revert "Fixed parse_url(): can not recognize port without scheme."
Original file line number Diff line number Diff line change @@ -1068,8 +1068,9 @@ PHPAPI zend_result php_session_register_module(const ps_module *ptr) /* {{{ */
1068
1068
/* }}} */
1069
1069
1070
1070
/* Dummy PS module function */
1071
+ /* We consider any ID valid, so we return FAILURE to indicate that a session doesn't exist */
1071
1072
PHPAPI zend_result php_session_validate_sid (PS_VALIDATE_SID_ARGS ) {
1072
- return SUCCESS ;
1073
+ return FAILURE ;
1073
1074
}
1074
1075
1075
1076
/* Dummy PS module function */
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ GH-9583: session_create_id() fails with user defined save handler that doesn't have a validateId() method
3
+ --EXTENSIONS--
4
+ session
5
+ --SKIPIF--
6
+ <?php include ('skipif.inc ' ); ?>
7
+ --FILE--
8
+ <?php
9
+
10
+ class SessionHandlerTester implements \SessionHandlerInterface
11
+ {
12
+
13
+ public function close (): bool { return true ; }
14
+
15
+ public function destroy ($ id ): bool { return true ; }
16
+
17
+ public function gc ($ max_lifetime ): int |false { return 1 ; }
18
+
19
+ public function open ($ path , $ name ): bool { return true ; }
20
+
21
+ public function read ($ id ): string { return '' ; }
22
+
23
+ public function write ($ id , $ data ): bool { return true ; }
24
+
25
+ //public function create_sid() { return uniqid(); }
26
+
27
+ //public function validateId($key) { return true; }
28
+ }
29
+
30
+ $ obj = new SessionHandlerTester ();
31
+ ini_set ('session.use_strict_mode ' ,'1 ' );
32
+ session_set_save_handler ($ obj );
33
+ session_start ();
34
+
35
+ echo "\nvalidateId() " .(method_exists ($ obj ,'validateId ' )?('returns ' .($ obj ->validateId (1 )?'true ' :'false ' )):'is commented out ' );
36
+ echo "\n" ;
37
+ $ sessionId = session_create_id ();
38
+ echo "\nSession ID: " .$ sessionId ;
39
+ echo "\n" ;
40
+
41
+ ?>
42
+ --EXPECTF--
43
+ validateId() is commented out
44
+
45
+ Session ID:%s
You can’t perform that action at this time.
0 commit comments