You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ge...@apache.org on 2010/02/20 01:23:10 UTC

svn commit: r912049 - /incubator/trafficserver/traffic/trunk/proxy/InkAPITestTool.cc

Author: georgep
Date: Sat Feb 20 00:23:10 2010
New Revision: 912049

URL: http://svn.apache.org/viewvc?rev=912049&view=rev
Log:
TS-198: This patch 'TS198_patch1.diff' fixes buffer overrun case in SDK API Regression Test synthetic client & server when reading responses and requests.
Review: Leif H.

Modified:
    incubator/trafficserver/traffic/trunk/proxy/InkAPITestTool.cc

Modified: incubator/trafficserver/traffic/trunk/proxy/InkAPITestTool.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/InkAPITestTool.cc?rev=912049&r1=912048&r2=912049&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/InkAPITestTool.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/InkAPITestTool.cc Sat Feb 20 00:23:10 2010
@@ -45,8 +45,8 @@
 #define PROXY_CONFIG_NAME_HTTP_PORT "proxy.config.http.server_port"
 #define PROXY_HTTP_DEFAULT_PORT 8080
 
-#define REQUEST_MAX_SIZE  2047
-#define RESPONSE_MAX_SIZE 2047
+#define REQUEST_MAX_SIZE  4095
+#define RESPONSE_MAX_SIZE 4095
 
 #define HTTP_REQUEST_END "\r\n\r\n"
 
@@ -529,8 +529,12 @@
     int blocklen;
     const char *blockptr = INKIOBufferBlockReadStart(block, txn->resp_reader, &blocklen);
 
-    memcpy((char *) (txn->response + txn->response_len), blockptr, blocklen);
-    txn->response_len += blocklen;
+    if (txn->response_len+blocklen <= RESPONSE_MAX_SIZE) {
+      memcpy((char *) (txn->response + txn->response_len), blockptr, blocklen);
+      txn->response_len += blocklen;
+    } else {
+      INKError("Error: Response length %d > response buffer size %d", txn->response_len+blocklen, RESPONSE_MAX_SIZE);
+    }
 
     block = INKIOBufferBlockNext(block);
   }
@@ -926,8 +930,12 @@
     int blocklen;
     const char *blockptr = INKIOBufferBlockReadStart(block, txn->req_reader, &blocklen);
 
-    memcpy((char *) (txn->request + txn->request_len), blockptr, blocklen);
-    txn->request_len += blocklen;
+    if (txn->request_len+blocklen <= REQUEST_MAX_SIZE) {
+      memcpy((char *) (txn->request + txn->request_len), blockptr, blocklen);
+      txn->request_len += blocklen;
+    } else {
+      INKError("Error: Request length %d > request buffer size %d", txn->request_len+blocklen, REQUEST_MAX_SIZE);
+    }
 
     block = INKIOBufferBlockNext(block);
   }