Browse Source

Fix #76954: apache_response_headers removes last character from header name

pull/3587/head
stodorovic 8 years ago
committed by Christoph M. Becker
parent
commit
47b89bc531
  1. 2
      NEWS
  2. 4
      sapi/cgi/cgi_main.c
  3. 48
      sapi/cgi/tests/apache_response_headers.phpt

2
NEWS

@ -12,6 +12,8 @@ PHP NEWS
- FCGI:
. Fixed bug #76948 (Failed shutdown/reboot or end session in Windows).
(Anatol)
. Fixed bug #76954 (apache_response_headers removes last character from header
name). (stodorovic)
- FTP:
. Fixed bug #76972 (Data truncation due to forceful ssl socket shutdown).

4
sapi/cgi/cgi_main.c

@ -1735,9 +1735,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);

48
sapi/cgi/tests/apache_response_headers.phpt

@ -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===
Loading…
Cancel
Save