1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Fix #78236: convert error on receiving variables when duplicate [

When an input variable name contains a non matched open bracket, we not
only have to replace that with an underscore, but also all following
forbidden characters.
This commit is contained in:
Christoph M. Becker
2020-07-23 11:10:11 +02:00
parent 4293dd5d34
commit fc4d462e94
3 changed files with 28 additions and 1 deletions

4
NEWS
View File

@@ -2,6 +2,10 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 8.0.0beta1
- Core:
. Fixed bug #78236 (convert error on receiving variables when duplicate [).
(cmb)
- JIT:
. Fixed bug #79864 (JIT segfault in Symfony OptionsResolver). (Dmitry)

View File

@@ -178,8 +178,14 @@ PHPAPI void php_register_variable_ex(const char *var_name, zval *val, zval *trac
} else {
ip = strchr(ip, ']');
if (!ip) {
/* PHP variables cannot contain '[' in their names, so we replace the character with a '_' */
/* not an index; un-terminate the var name */
*(index_s - 1) = '_';
/* PHP variables cannot contain ' ', '.', '[' in their names, so we replace the characters with a '_' */
for (p = index_s; *p; p++) {
if (*p == ' ' || *p == '.' || *p == '[') {
*p = '_';
}
}
index_len = 0;
if (index) {

17
tests/basic/bug78236.phpt Normal file
View File

@@ -0,0 +1,17 @@
--TEST--
Bug #78236 (convert error on receiving variables when duplicate [)
--POST--
id[name=1&id[[name=a&id[na me.=3
--FILE--
<?php
var_dump($_POST);
?>
--EXPECT--
array(3) {
["id_name"]=>
string(1) "1"
["id__name"]=>
string(1) "a"
["id_na_me_"]=>
string(1) "3"
}