From: Felix Fietkau Date: Wed, 2 Jan 2013 18:35:21 +0000 (+0100) Subject: fix error handling of invalid http method/version X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=commitdiff_plain;h=a91df297fe85b29805a1a1591e9a6371b357f95c fix error handling of invalid http method/version --- diff --git a/client.c b/client.c index c5b82d2..25cc271 100644 --- a/client.c +++ b/client.c @@ -134,6 +134,7 @@ static int client_parse_request(struct client *cl, char *data) { struct http_request *req = &cl->request; char *type, *path, *version; + int h_method, h_version; type = strtok(data, " "); path = strtok(NULL, " "); @@ -143,13 +144,16 @@ static int client_parse_request(struct client *cl, char *data) memset(&cl->request, 0, sizeof(cl->request)); req->url = path; - req->method = find_idx(http_methods, ARRAY_SIZE(http_methods), type); - if (req->method < 0) - return CLIENT_STATE_DONE; - req->version = find_idx(http_versions, ARRAY_SIZE(http_versions), version); - if (cl->request.version < 0) + h_method = find_idx(http_methods, ARRAY_SIZE(http_methods), type); + h_version = find_idx(http_versions, ARRAY_SIZE(http_versions), version); + if (h_method < 0 || h_version < 0) { + req->version = UH_HTTP_VER_1_0; return CLIENT_STATE_DONE; + } + + req->method = h_method; + req->version = h_version; return CLIENT_STATE_HEADER; }