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