diff options
| author | Christoph M. Becker <cmb@php.net> | 2015-06-27 20:05:30 +0200 |
|---|---|---|
| committer | Christoph M. Becker <cmb@php.net> | 2015-06-27 20:05:30 +0200 |
| commit | a7bbc68bacaac5d46452259785a412f662c89aa5 (patch) | |
| tree | 801da00e0d2eea5d97f4975d6f65b631b3dcc7cc /sapi | |
| parent | 1ec6ff0b495f31db66cb9b3c225f76579eb48b28 (diff) | |
| parent | 7e97faa3e834cca98c61043dc02c1af0aadb1f8c (diff) | |
| download | php-git-a7bbc68bacaac5d46452259785a412f662c89aa5.tar.gz | |
Merge branch 'PHP-5.6'
* PHP-5.6:
updated NEWS
Fixed #69655: php -S changes MKCALENDAR request method to MKCOL
Diffstat (limited to 'sapi')
| -rw-r--r-- | sapi/cli/php_http_parser.c | 11 | ||||
| -rw-r--r-- | sapi/cli/tests/bug69655.phpt | 30 |
2 files changed, 39 insertions, 2 deletions
diff --git a/sapi/cli/php_http_parser.c b/sapi/cli/php_http_parser.c index 653c54c1a5..d289e80f70 100644 --- a/sapi/cli/php_http_parser.c +++ b/sapi/cli/php_http_parser.c @@ -604,15 +604,20 @@ size_t php_http_parser_execute (php_http_parser *parser, goto error; matcher = method_strings[parser->method]; - if (ch == ' ' && (matcher[index] == '\0' || parser->method == PHP_HTTP_NOT_IMPLEMENTED)) { + if (ch == ' ') { + if (parser->method != PHP_HTTP_NOT_IMPLEMENTED && matcher[index] != '\0') { + parser->method = PHP_HTTP_NOT_IMPLEMENTED; + } state = s_req_spaces_before_url; - } else if (ch == matcher[index]) { + } else if (parser->method == PHP_HTTP_NOT_IMPLEMENTED || ch == matcher[index]) { ; /* nada */ } else if (parser->method == PHP_HTTP_CONNECT) { if (index == 1 && ch == 'H') { parser->method = PHP_HTTP_CHECKOUT; } else if (index == 2 && ch == 'P') { parser->method = PHP_HTTP_COPY; + } else { + parser->method = PHP_HTTP_NOT_IMPLEMENTED; } } else if (parser->method == PHP_HTTP_MKCOL) { if (index == 1 && ch == 'O') { @@ -623,6 +628,8 @@ size_t php_http_parser_execute (php_http_parser *parser, parser->method = PHP_HTTP_MSEARCH; } else if (index == 2 && ch == 'A') { parser->method = PHP_HTTP_MKACTIVITY; + } else { + parser->method = PHP_HTTP_NOT_IMPLEMENTED; } } else if (index == 1 && parser->method == PHP_HTTP_POST && ch == 'R') { parser->method = PHP_HTTP_PROPFIND; /* or HTTP_PROPPATCH */ diff --git a/sapi/cli/tests/bug69655.phpt b/sapi/cli/tests/bug69655.phpt new file mode 100644 index 0000000000..188b9c31ee --- /dev/null +++ b/sapi/cli/tests/bug69655.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #69655 (php -S changes MKCALENDAR request method to MKCOL) +--INI-- +allow_url_fopen=1 +--SKIPIF-- +<?php +include "skipif.inc"; +?> +--FILE-- +<?php +include "php_cli_server.inc"; +php_cli_server_start(); +foreach (['MKCALENDAR', 'MKCO', 'MKCOLL', 'M'] as $method) { + $context = stream_context_create(['http' => ['method' => $method]]); + // the following is supposed to emit a warning for unsupported methods + file_get_contents("http://" . PHP_CLI_SERVER_ADDRESS, false, $context); +} +?> +--EXPECTF-- +Warning: file_get_contents(http://localhost:8964): failed to open stream: HTTP request failed! HTTP/1.0 501 Not Implemented + in %s on line %d + +Warning: file_get_contents(http://localhost:8964): failed to open stream: HTTP request failed! HTTP/1.0 501 Not Implemented + in %s on line %d + +Warning: file_get_contents(http://localhost:8964): failed to open stream: HTTP request failed! HTTP/1.0 501 Not Implemented + in %s on line %d + +Warning: file_get_contents(http://localhost:8964): failed to open stream: HTTP request failed! HTTP/1.0 501 Not Implemented + in %s on line %d |
