From: Jim Jagielski Date: Tue, 17 Sep 2002 01:14:57 +0000 (+0000) Subject: The protocol version (eg: HTTP/1.1) in the request line parsing X-Git-Tag: WROWE_2_0_43_PRE1~117 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6453fb2a05cccfa05b9555ef4fea0f22d61df8a1;p=thirdparty%2Fapache%2Fhttpd.git The protocol version (eg: HTTP/1.1) in the request line parsing is now case insensitive. Before, 'http/1.1' would silently be forced to HTTP/1.0 PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@96857 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 4d9b091058e..a934a306484 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.0.42 Changes with Apache 2.0.41 + *) The protocol version (eg: HTTP/1.1) in the request line parsing + is now case insensitive. [Jim Jagielski] + *) Allow AddOutputFilterByType to add multiple filters per directive. [Justin Erenkrantz] diff --git a/server/protocol.c b/server/protocol.c index b228e811272..b7db9879131 100644 --- a/server/protocol.c +++ b/server/protocol.c @@ -642,6 +642,7 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) conn_rec *conn = r->connection; #endif int major = 1, minor = 0; /* Assume HTTP/1.0 if non-"HTTP" protocol */ + char http[5]; apr_size_t len; /* Read past empty lines until we get a real request line, @@ -732,8 +733,9 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb) && apr_isdigit(pro[7])) { r->proto_num = HTTP_VERSION(pro[5] - '0', pro[7] - '0'); } - else if (2 == sscanf(r->protocol, "HTTP/%u.%u", &major, &minor) - && minor < HTTP_VERSION(1, 0)) /* don't allow HTTP/0.1000 */ + else if (3 == sscanf(r->protocol, "%4s/%u.%u", http, &major, &minor) + && (strcasecmp("http", http) == 0) + && (minor < HTTP_VERSION(1, 0)) ) /* don't allow HTTP/0.1000 */ r->proto_num = HTTP_VERSION(major, minor); else r->proto_num = HTTP_VERSION(1, 0);