Merge branch 'PHP-8.4'

* PHP-8.4:
  Fix type confusion with session SID constant
This commit is contained in:
Niels Dossche 2025-01-23 19:03:45 +01:00
commit 6d4598eba8
No known key found for this signature in database
GPG key ID: B8A8AD166DF0E2E5
2 changed files with 21 additions and 2 deletions

View file

@ -1571,7 +1571,7 @@ PHPAPI zend_result php_session_reset_id(void) /* {{{ */
smart_str_appends(&var, ZSTR_VAL(PS(id)));
smart_str_0(&var);
if (sid) {
zval_ptr_dtor_str(sid);
zval_ptr_dtor(sid);
ZVAL_STR(sid, smart_str_extract(&var));
} else {
REGISTER_STRINGL_CONSTANT("SID", ZSTR_VAL(var.s), ZSTR_LEN(var.s), CONST_DEPRECATED);
@ -1579,7 +1579,7 @@ PHPAPI zend_result php_session_reset_id(void) /* {{{ */
}
} else {
if (sid) {
zval_ptr_dtor_str(sid);
zval_ptr_dtor(sid);
ZVAL_EMPTY_STRING(sid);
} else {
REGISTER_STRINGL_CONSTANT("SID", "", 0, CONST_DEPRECATED);

View file

@ -0,0 +1,19 @@
--TEST--
SID constant type confusion
--EXTENSIONS--
session
--SKIPIF--
<?php include('skipif.inc'); ?>
--INI--
session.use_cookies=0
session.use_only_cookies=1
--FILE--
<?php
define('SID', [0xdeadbeef]);
session_start();
var_dump(SID);
?>
--EXPECT--
string(0) ""