Merge branch 'PHP-8.2' into PHP-8.3

* PHP-8.2:
  [ci skip] NEWS
  Fix GH-13891: memleak and segfault when using ini_set with session.trans_sid_hosts (#13892)
This commit is contained in:
Niels Dossche 2024-04-06 13:45:00 +02:00
commit eb244fcb49
No known key found for this signature in database
GPG key ID: B8A8AD166DF0E2E5
3 changed files with 22 additions and 2 deletions

2
NEWS
View file

@ -34,6 +34,8 @@ PHP NEWS
- Session: - Session:
. Fixed bug GH-13856 (Member access within null pointer of type 'ps_files' in . Fixed bug GH-13856 (Member access within null pointer of type 'ps_files' in
ext/session/mod_files.c). (nielsdos) ext/session/mod_files.c). (nielsdos)
. Fixed bug GH-13891 (memleak and segfault when using ini_set with
session.trans_sid_hosts). (nielsdos, kamil-tekiela).
- Streams: - Streams:
. Fixed bug GH-13264 (Part 1 - Memory leak on stream filter failure). . Fixed bug GH-13264 (Part 1 - Memory leak on stream filter failure).

View file

@ -0,0 +1,17 @@
--TEST--
GH-13891 (memleak and segfault when using ini_set with session.trans_sid_hosts)
--INI--
session.use_cookies=0
session.use_only_cookies=0
session.use_trans_sid=1
session.trans_sid_hosts=php.net
--EXTENSIONS--
session
--SKIPIF--
<?php include('skipif.inc'); ?>
--FILE--
<?php
// We *must* set it here because the bug only triggers on a runtime edit
ini_set('session.trans_sid_hosts','php.net');
?>
--EXPECT--

View file

@ -138,9 +138,10 @@ static int php_ini_on_update_hosts(zend_ini_entry *entry, zend_string *new_value
} }
keylen = q - key; keylen = q - key;
if (keylen > 0) { if (keylen > 0) {
tmp_key = zend_string_init(key, keylen, 0); /* Note: the hash table is persistently allocated, so the strings must be too! */
tmp_key = zend_string_init(key, keylen, true);
zend_hash_add_empty_element(hosts, tmp_key); zend_hash_add_empty_element(hosts, tmp_key);
zend_string_release_ex(tmp_key, 0); zend_string_release_ex(tmp_key, true);
} }
} }
efree(tmp); efree(tmp);