Merge branch 'PHP-7.3'

* PHP-7.3:
  Fix #76954: apache_response_headers removes last character from header name
This commit is contained in:
Christoph M. Becker 2018-10-08 12:33:32 +02:00
commit c266a19094
2 changed files with 50 additions and 2 deletions

View file

@ -1689,9 +1689,9 @@ static void add_response_header(sapi_header_struct *h, zval *return_value) /* {{
len = p - h->header;
}
if (len > 0) {
do {
while (len != 0 && (h->header[len-1] == ' ' || h->header[len-1] == '\t')) {
len--;
} while (len != 0 && (h->header[len-1] == ' ' || h->header[len-1] == '\t'));
}
if (len) {
s = do_alloca(len + 1, use_heap);
memcpy(s, h->header, len);

View file

@ -0,0 +1,48 @@
--TEST--
apache_response_headers()
--SKIPIF--
<?php
include "skipif.inc";
?>
--FILE--
<?php
include "include.inc";
$php = get_cgi_path();
reset_env_vars();
$test_file = dirname(__FILE__) . DIRECTORY_SEPARATOR ."apache_response_headers.test.php";
$code = '<?php';
$code .= '
header( "X-Robots-Tag : noindex,nofollow,noarchive" );
header( "Content-type: text/html; charset=UTF-8" );
header( "Bad-header" );
header( " : " );
header( ":" );
flush();
var_dump( apache_response_headers() );
?>
';
file_put_contents( $test_file, $code );
passthru( "$php -n -q " . escapeshellarg( $test_file ) );
?>
===DONE===
--CLEAN--
<?php
@unlink( dirname(__FILE__) . DIRECTORY_SEPARATOR ."apache_response_headers.test.php" );
?>
--EXPECTF--
array(3) {
["X-Powered-By"]=>
string(%d) "PHP/%s"
["X-Robots-Tag"]=>
string(26) "noindex,nofollow,noarchive"
["Content-type"]=>
string(24) "text/html; charset=UTF-8"
}
===DONE===