Updated Branches:
  refs/heads/master ab996456f -> 5ad8eabdf

TS-2320: TSRedirectUrlSet truncates host header in redirected request
Updated to memcpy based on James Peach's recomendation
Also, saw a problem with malloc and sizeof when switching the code to only
use alloca.  Using a variable length array all the time now.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/5ad8eabd
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/5ad8eabd
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/5ad8eabd

Branch: refs/heads/master
Commit: 5ad8eabdf87d465e13791c8451591cf0d986e760
Parents: ab99645
Author: Bryan Call <[email protected]>
Authored: Tue Nov 5 13:35:08 2013 -0800
Committer: Bryan Call <[email protected]>
Committed: Tue Nov 5 13:35:08 2013 -0800

----------------------------------------------------------------------
 proxy/http/HttpSM.cc | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5ad8eabd/proxy/http/HttpSM.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 06f6096..e5751a0 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -7393,17 +7393,11 @@ HttpSM::redirect_request(const char *redirect_url, 
const int redirect_len)
 
     if (host != NULL) {
       int port = clientUrl.port_get();
-#if defined(__GNUC__)
       char buf[host_len + 7];
-#else
-      char *buf = (char *)ats_malloc(host_len + 7);
-#endif
-      ink_strlcpy(buf, host, host_len+1);
+
+      memcpy(buf, host, host_len);
       host_len += snprintf(buf + host_len, sizeof(buf) - host_len, ":%d", 
port);
       t_state.hdr_info.client_request.value_set(MIME_FIELD_HOST, 
MIME_LEN_HOST, buf, host_len);
-#if !defined(__GNUC__)
-      ats_free(buf);
-#endif
     } else {
       // the client request didn't have a host, so remove it from the headers
       t_state.hdr_info.client_request.field_delete(MIME_FIELD_HOST, 
MIME_LEN_HOST);

Reply via email to