com php-src: Fixed #69655: php -S changes MKCALENDAR request method to MKCOL: sapi/cli/php_http_parser.c sapi/cli/tests/bug6 9655.phpt

From: Date: Sat, 27 Jun 2015 18:02:21 +0000
Subject: com php-src: Fixed #69655: php -S changes MKCALENDAR request method to MKCOL: sapi/cli/php_http_parser.c sapi/cli/tests/bug6 9655.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-87563@lists.php.net to get a copy of this message
Commit: bbe28d3a55f8b129d4595e5202b7c9891a568509 Author: Christoph M. Becker <cmb@php.net> Sat, 27 Jun 2015 19:47:32 +0200 Parents: b811bb3920168c19aa7cc9fa51cbad0d3d127dcc Branches: PHP-5.6 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=bbe28d3a55f8b129d4595e5202b7c9891a568509 Log: Fixed #69655: php -S changes MKCALENDAR request method to MKCOL The parsing of the request method in the CLI server has been faulty, so that several unsupported methods have been recognized as other methods. Bugs: https://bugs.php.net/69655 Changed paths: M sapi/cli/php_http_parser.c A sapi/cli/tests/bug69655.phpt Diff: diff --git a/sapi/cli/php_http_parser.c b/sapi/cli/php_http_parser.c index 2fc0405..73c6d4c 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 0000000..188b9c3 --- /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

« previous php.cvs (#87563) next »