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);
}