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.
This commit is contained in:
Christoph M. Becker 2015-06-27 19:47:32 +02:00
parent b811bb3920
commit bbe28d3a55
2 changed files with 39 additions and 2 deletions

View file

@ -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 */