]> granicus.if.org Git - apache/commitdiff
ab: increase request and response header size to 8192 bytes,
authorJan Kaluža <jkaluza@apache.org>
Thu, 4 Sep 2014 10:52:24 +0000 (10:52 +0000)
committerJan Kaluža <jkaluza@apache.org>
Thu, 4 Sep 2014 10:52:24 +0000 (10:52 +0000)
fix potential buffer-overflow in Server: header handling.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1622450 13f79535-47bb-0310-9956-ffa450edef68

support/ab.c

index 7f0777b23a10353b239a9b06feba78cf0b12dabc..1bcab1bbbd7bc9463ecbdc40620ec0dc08507464 100644 (file)
@@ -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;
 
@@ -1516,12 +1516,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;
             }