Commit f7c78aa8 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Fix a segfault on certain garbed HTTP request headers.

Fixes:	#354



git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@3315 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 8e716e7d
......@@ -308,6 +308,7 @@ cnt_error(struct sess *sp)
/* We always close when we take this path */
sp->doclose = "error";
sp->wantbody = 1;
w = sp->wrk;
if (sp->obj == NULL) {
......
......@@ -496,16 +496,17 @@ http_DissectRequest(struct sess *sp)
i = http_splitline(sp->wrk, sp->fd, hp, htc,
HTTP_HDR_REQ, HTTP_HDR_URL, HTTP_HDR_PROTO);
hp->protover = 0.9;
if (i != 0) {
WSPR(sp, SLT_HttpGarbage, htc->rxbuf);
return (i);
}
if (!strcmp(hp->hd[HTTP_HDR_PROTO].b, "HTTP/1.0"))
hp->protover = 1.0;
else if (!strcmp(hp->hd[HTTP_HDR_PROTO].b, "HTTP/1.1"))
hp->protover = 1.1;
else
hp->protover = 0.9;
if (i != 0)
WSPR(sp, SLT_HttpGarbage, htc->rxbuf);
return (i);
}
......
# $Id$
test "#354 Segfault in strcmp in http_DissectRequest()"
server s1 {
rxreq
txresp
}
varnish v1 -vcl+backend {} -start
client c1 {
send "FOO\r\n\r\n"
rxresp
expect resp.status == 400
} -run
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment