Fix #68291: 404 on urls with '+'

URI paths have to be treated according to RFC 3986 by the CLI web server, not
as application/x-www-form-urlencoded.
This commit is contained in:
Christoph M. Becker 2015-09-05 13:52:41 +02:00 committed by Christoph M. Becker
parent f9ece83994
commit fd94c92171
2 changed files with 23 additions and 2 deletions

View File

@ -98,7 +98,7 @@
#include "ext/standard/file.h" /* for php_set_sock_blocking() :-( */
#include "ext/standard/php_smart_str.h"
#include "ext/standard/html.h"
#include "ext/standard/url.h" /* for php_url_decode() */
#include "ext/standard/url.h" /* for php_raw_url_decode() */
#include "ext/standard/php_string.h" /* for php_dirname() */
#include "php_network.h"
@ -1577,7 +1577,7 @@ static void normalize_vpath(char **retval, size_t *retval_len, const char *vpath
return;
}
decoded_vpath_end = decoded_vpath + php_url_decode(decoded_vpath, vpath_len);
decoded_vpath_end = decoded_vpath + php_raw_url_decode(decoded_vpath, vpath_len);
#ifdef PHP_WIN32
{

View File

@ -0,0 +1,21 @@
--TEST--
Bug #68291 (404 on urls with '+')
--INI--
allow_url_fopen=1
--SKIPIF--
<?php
include "skipif.inc";
?>
--FILE--
<?php
include "php_cli_server.inc";
file_put_contents(__DIR__ . '/bug68291+test.html', 'Found');
php_cli_server_start(NULL, NULL);
echo file_get_contents('http://' . PHP_CLI_SERVER_ADDRESS . '/bug68291+test.html');
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/bug68291+test.html');
?>
--EXPECT--
Found