mirror of
https://github.com/php/php-src.git
synced 2025-08-18 23:18:56 +02:00
Fixed handling of multiple cookies with the same name.
Added support for cookies into run-tests.php
This commit is contained in:
parent
847741cb08
commit
94e3f478d7
3 changed files with 52 additions and 2 deletions
|
@ -370,6 +370,16 @@ static unsigned int php_sapi_filter(int arg, char *var, char **val, unsigned int
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* According to rfc2965, more specific paths are listed above the less specific ones.
|
||||||
|
* If we encounter a duplicate cookie name, we should skip it, since it is not possible
|
||||||
|
* to have the same (plain text) cookie name for the same path and we should not overwrite
|
||||||
|
* more specific cookies with the less specific ones.
|
||||||
|
*/
|
||||||
|
if (arg == PARSE_COOKIE && orig_array_ptr && zend_symtable_exists(Z_ARRVAL_P(orig_array_ptr), var, strlen(var)+1)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (array_ptr) {
|
if (array_ptr) {
|
||||||
/* Make a copy of the variable name, as php_register_variable_ex seems to
|
/* Make a copy of the variable name, as php_register_variable_ex seems to
|
||||||
* modify it */
|
* modify it */
|
||||||
|
|
32
ext/filter/tests/041.phpt
Normal file
32
ext/filter/tests/041.phpt
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
--TEST--
|
||||||
|
COOKIE multiple cookie test
|
||||||
|
--INI--
|
||||||
|
filter.default=stripped
|
||||||
|
filter.default_flags=0
|
||||||
|
--COOKIE--
|
||||||
|
abc=dir; def=true; abc=root; xyz="foo bar";
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
var_dump($_COOKIE);
|
||||||
|
var_dump(filter_has_var(INPUT_COOKIE, "abc"));
|
||||||
|
var_dump(filter_input(INPUT_COOKIE, "abc"));
|
||||||
|
var_dump(filter_input(INPUT_COOKIE, "def"));
|
||||||
|
var_dump(filter_input(INPUT_COOKIE, "xyz"));
|
||||||
|
var_dump(filter_has_var(INPUT_COOKIE, "bogus"));
|
||||||
|
var_dump(filter_input(INPUT_COOKIE, "xyz", FILTER_SANITIZE_SPECIAL_CHARS));
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
array(3) {
|
||||||
|
["abc"]=>
|
||||||
|
string(3) "dir"
|
||||||
|
["def"]=>
|
||||||
|
string(4) "true"
|
||||||
|
["xyz"]=>
|
||||||
|
string(17) ""foo bar""
|
||||||
|
}
|
||||||
|
bool(true)
|
||||||
|
string(3) "dir"
|
||||||
|
string(4) "true"
|
||||||
|
string(9) ""foo bar""
|
||||||
|
bool(false)
|
||||||
|
string(17) ""foo bar""
|
|
@ -950,13 +950,14 @@ TEST $file
|
||||||
'TEST' => '',
|
'TEST' => '',
|
||||||
'SKIPIF' => '',
|
'SKIPIF' => '',
|
||||||
'GET' => '',
|
'GET' => '',
|
||||||
|
'COOKIE' => '',
|
||||||
'POST_RAW' => '',
|
'POST_RAW' => '',
|
||||||
'POST' => '',
|
'POST' => '',
|
||||||
'UPLOAD' => '',
|
'UPLOAD' => '',
|
||||||
'ARGS' => '',
|
'ARGS' => '',
|
||||||
);
|
);
|
||||||
|
|
||||||
$fp = @fopen($file, "rt") or error("Cannot open test file: $file");
|
$fp = fopen($file, "rt") or error("Cannot open test file: $file");
|
||||||
|
|
||||||
$borked = false;
|
$borked = false;
|
||||||
$bork_info = '';
|
$bork_info = '';
|
||||||
|
@ -1039,7 +1040,7 @@ TEST $file
|
||||||
$tested = trim($section_text['TEST']);
|
$tested = trim($section_text['TEST']);
|
||||||
|
|
||||||
/* For GET/POST tests, check if cgi sapi is available and if it is, use it. */
|
/* For GET/POST tests, check if cgi sapi is available and if it is, use it. */
|
||||||
if (!empty($section_text['GET']) || !empty($section_text['POST']) || !empty($section_text['POST_RAW'])) {
|
if (!empty($section_text['GET']) || !empty($section_text['POST']) || !empty($section_text['POST_RAW']) || !empty($section_text['COOKIE'])) {
|
||||||
if (isset($php_cgi)) {
|
if (isset($php_cgi)) {
|
||||||
$old_php = $php;
|
$old_php = $php;
|
||||||
$php = $php_cgi .' -C ';
|
$php = $php_cgi .' -C ';
|
||||||
|
@ -1288,6 +1289,12 @@ TEST $file
|
||||||
$env['PATH_TRANSLATED'] = $test_file;
|
$env['PATH_TRANSLATED'] = $test_file;
|
||||||
$env['SCRIPT_FILENAME'] = $test_file;
|
$env['SCRIPT_FILENAME'] = $test_file;
|
||||||
|
|
||||||
|
if (array_key_exists('COOKIE', $section_text)) {
|
||||||
|
$env['HTTP_COOKIE'] = trim($section_text['COOKIE']);
|
||||||
|
} else {
|
||||||
|
$env['HTTP_COOKIE'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
$args = $section_text['ARGS'] ? ' -- '.$section_text['ARGS'] : '';
|
$args = $section_text['ARGS'] ? ' -- '.$section_text['ARGS'] : '';
|
||||||
|
|
||||||
if (array_key_exists('POST_RAW', $section_text) && !empty($section_text['POST_RAW'])) {
|
if (array_key_exists('POST_RAW', $section_text) && !empty($section_text['POST_RAW'])) {
|
||||||
|
@ -1347,6 +1354,7 @@ QUERY_STRING = " . $env['QUERY_STRING'] . "
|
||||||
REDIRECT_STATUS = " . $env['REDIRECT_STATUS'] . "
|
REDIRECT_STATUS = " . $env['REDIRECT_STATUS'] . "
|
||||||
REQUEST_METHOD = " . $env['REQUEST_METHOD'] . "
|
REQUEST_METHOD = " . $env['REQUEST_METHOD'] . "
|
||||||
SCRIPT_FILENAME = " . $env['SCRIPT_FILENAME'] . "
|
SCRIPT_FILENAME = " . $env['SCRIPT_FILENAME'] . "
|
||||||
|
HTTP_COOKIE = " . $env['HTTP_COOKIE'] . "
|
||||||
COMMAND $cmd
|
COMMAND $cmd
|
||||||
";
|
";
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue