From: Jim Jagielski Date: Tue, 11 Nov 2014 11:44:52 +0000 (+0000) Subject: Merge r1622450 from trunk: X-Git-Tag: 2.4.11~185 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ba7c41ed1da8d0e6841ed55342edaba917c2d48d;p=apache Merge r1622450 from trunk: ab: increase request and response header size to 8192 bytes, fix potential buffer-overflow in Server: header handling. Submitted by: jkaluza Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1638069 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index 6bba807856..e7090fb2a2 100644 --- a/STATUS +++ b/STATUS @@ -102,12 +102,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * ab: Increase request and response header size to 8192 bytes. - Fix potential buffer-overflow in Server: header handling. - trunk patch: http://svn.apache.org/r1622450 - 2.4.x patch: trunk works - +1: jkaluza, ylavic, trawick - * mod_cache: Avoid another (unlikely) access to freed memory. trunk patch: http://svn.apache.org/r1632740 2.4.x patch: http://people.apache.org/~ylavic/httpd-2.4.x-apr_bucket_delete_new_fix.patch diff --git a/support/ab.c b/support/ab.c index 36e68a83e0..03d1229154 100644 --- a/support/ab.c +++ b/support/ab.c @@ -220,7 +220,7 @@ typedef enum { STATE_READ } connect_state_e; -#define CBUFFSIZE (2048) +#define CBUFFSIZE (8192) struct connection { apr_pool_t *ctx; @@ -340,7 +340,7 @@ BIO *bio_out,*bio_err; apr_time_t start, lasttime, stoptime; /* global request (and its length) */ -char _request[2048]; +char _request[8192]; char *request = _request; apr_size_t reqlen; @@ -1515,12 +1515,14 @@ static void read_connection(struct connection * c) * this is first time, extract some interesting info */ char *p, *q; + size_t len = 0; p = strstr(c->cbuff, "Server:"); q = servername; if (p) { p += 8; - while (*p > 32) - *q++ = *p++; + /* -1 to not overwrite last '\0' byte */ + while (*p > 32 && len++ < sizeof(servername) - 1) + *q++ = *p++; } *q = 0; }