aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReyk Floeter <reyk@esdenera.com>2015-01-06 15:11:30 +0100
committerReyk Floeter <reyk@esdenera.com>2015-01-06 15:11:30 +0100
commite3e458d398f99bf2b441565fc0e6c37e24e5c8d1 (patch)
treeab2d1ecf57115ed63c215b37c3a4af55f22af0e5
parentec67e5c9f8c6eb37ca482b20277883a65c1311e3 (diff)
downloadhttpd-e3e458d398f99bf2b441565fc0e6c37e24e5c8d1.tar.gz
httpd-e3e458d398f99bf2b441565fc0e6c37e24e5c8d1.zip
sync with -current
-rw-r--r--config.c2
-rw-r--r--parse.y2
-rw-r--r--server.c2
-rw-r--r--server_http.c41
4 files changed, 20 insertions, 27 deletions
diff --git a/config.c b/config.c
index 8fb9b7d..4077d34 100644
--- a/config.c
+++ b/config.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: config.c,v 1.27 2015/01/03 15:49:18 reyk Exp $ */
+/* $OpenBSD: config.c,v 1.28 2015/01/06 14:07:48 reyk Exp $ */
/*
* Copyright (c) 2011 - 2014 Reyk Floeter <reyk@openbsd.org>
diff --git a/parse.y b/parse.y
index 0586c46..c7a536c 100644
--- a/parse.y
+++ b/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.48 2015/01/03 16:20:31 reyk Exp $ */
+/* $OpenBSD: parse.y,v 1.51 2015/01/06 14:07:48 reyk Exp $ */
/*
* Copyright (c) 2007 - 2014 Reyk Floeter <reyk@openbsd.org>
diff --git a/server.c b/server.c
index 3b4c0dc..cc237ca 100644
--- a/server.c
+++ b/server.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server.c,v 1.49 2014/12/21 00:54:49 guenther Exp $ */
+/* $OpenBSD: server.c,v 1.50 2015/01/06 14:07:48 reyk Exp $ */
/*
* Copyright (c) 2006 - 2014 Reyk Floeter <reyk@openbsd.org>
diff --git a/server_http.c b/server_http.c
index d83c7b4..5568840 100644
--- a/server_http.c
+++ b/server_http.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server_http.c,v 1.59 2015/01/04 22:23:58 chrisz Exp $ */
+/* $OpenBSD: server_http.c,v 1.61 2015/01/06 13:48:15 reyk Exp $ */
/*
* Copyright (c) 2006 - 2014 Reyk Floeter <reyk@openbsd.org>
@@ -184,17 +184,14 @@ server_read_http(struct bufferevent *bev, void *arg)
value = strchr(key, ':');
if (value == NULL) {
if (clt->clt_line == 1) {
- free(line);
server_abort_http(clt, 400, "malformed");
- return;
+ goto abort;
}
/* Append line to the last header, if present */
if (kv_extend(&desc->http_headers,
- desc->http_lastheader, line) == NULL) {
- free(line);
+ desc->http_lastheader, line) == NULL)
goto fail;
- }
free(line);
continue;
@@ -214,22 +211,22 @@ server_read_http(struct bufferevent *bev, void *arg)
*/
if (clt->clt_line == 1) {
if ((desc->http_method = server_httpmethod_byname(key))
- == HTTP_METHOD_NONE)
- goto fail;
+ == HTTP_METHOD_NONE) {
+ server_abort_http(clt, 400, "malformed");
+ goto abort;
+ }
/*
* Decode request path and query
*/
desc->http_path = strdup(value);
- if (desc->http_path == NULL) {
- free(line);
+ if (desc->http_path == NULL)
goto fail;
- }
+
desc->http_version = strchr(desc->http_path, ' ');
- if (desc->http_version == NULL) {
- free(line);
+ if (desc->http_version == NULL)
goto fail;
- }
+
*desc->http_version++ = '\0';
desc->http_query = strchr(desc->http_path, '?');
if (desc->http_query != NULL)
@@ -240,16 +237,14 @@ server_read_http(struct bufferevent *bev, void *arg)
* be changed independently by the filters later.
*/
if ((desc->http_version =
- strdup(desc->http_version)) == NULL) {
- free(line);
+ strdup(desc->http_version)) == NULL)
goto fail;
- }
+
if (desc->http_query != NULL &&
(desc->http_query =
- strdup(desc->http_query)) == NULL) {
- free(line);
+ strdup(desc->http_query)) == NULL)
goto fail;
- }
+
} else if (desc->http_method != HTTP_METHOD_NONE &&
strcasecmp("Content-Length", key) == 0) {
if (desc->http_method == HTTP_METHOD_TRACE ||
@@ -288,10 +283,9 @@ server_read_http(struct bufferevent *bev, void *arg)
if (clt->clt_line != 1) {
if ((hdr = kv_add(&desc->http_headers, key,
- value)) == NULL) {
- free(line);
+ value)) == NULL)
goto fail;
- }
+
desc->http_lastheader = hdr;
}
@@ -379,7 +373,6 @@ server_read_http(struct bufferevent *bev, void *arg)
return;
fail:
server_abort_http(clt, 500, strerror(errno));
- return;
abort:
free(line);
}