Repository: trafficserver Updated Branches: refs/heads/master 10a9eed13 -> b37266a9e
TS-3353: fix traffic_via memory bug Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/b37266a9 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/b37266a9 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/b37266a9 Branch: refs/heads/master Commit: b37266a9eeb88687e2c1cc24777232cd49be5fb8 Parents: 10a9eed Author: Bin Zeng <[email protected]> Authored: Fri Jan 30 16:07:13 2015 -0800 Committer: James Peach <[email protected]> Committed: Fri Jan 30 16:09:30 2015 -0800 ---------------------------------------------------------------------- CHANGES | 5 ++++- cmd/traffic_via/traffic_via.cc | 19 ++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b37266a9/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 14963f3..48f50ee 100644 --- a/CHANGES +++ b/CHANGES @@ -1,8 +1,11 @@ -*- coding: utf-8 -*- Changes with Apache Traffic Server 5.3.0 + *) [TS-3353] fix traffic_via memory bug. + Author: Bin Zeng <[email protected]> + *) [TS-3319] Adapt to OpenSSL 1.0.2 certificate callback. - + *) [TS-1435] return full content if client is a muti range request Author: Lars Svensson <[email protected]> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b37266a9/cmd/traffic_via/traffic_via.cc ---------------------------------------------------------------------- diff --git a/cmd/traffic_via/traffic_via.cc b/cmd/traffic_via/traffic_via.cc index af7cb64..89eb0a8 100644 --- a/cmd/traffic_via/traffic_via.cc +++ b/cmd/traffic_via/traffic_via.cc @@ -230,12 +230,12 @@ printViaHeader(const char * header) static TSMgmtError decodeViaHeader(const char * str) { - size_t viaHdrLength; - ats_scoped_str tmp(strdup(str)); - char * Via = &tmp[0]; + size_t viaHdrLength = strlen(str); + char tmp[viaHdrLength + 2]; + char * Via = tmp; - viaHdrLength = strlen(Via); - printf("Via header is %s, Length is %zu\n",Via, viaHdrLength); + strncpy(Via, str, viaHdrLength + 1); // Safe to call strcpy. + printf("Via header is %s, Length is %zu\n", Via, viaHdrLength); //Via header inside square brackets if (Via[0] == '[' && Via[viaHdrLength-1] == ']') { @@ -244,14 +244,15 @@ decodeViaHeader(const char * str) Via[viaHdrLength] = '\0'; //null terminate the string after trimming } + if (viaHdrLength == 5) { + Via = strcat(Via, " "); //Add one space character before decoding via header + ++viaHdrLength; + } + if (viaHdrLength == 24 || viaHdrLength == 6) { //Decode via header printViaHeader(Via); return TS_ERR_OKAY; - } else if(viaHdrLength == 5) { - Via = strcat(Via," "); //Add one space character before decoding via header - printViaHeader(Via); - return TS_ERR_OKAY; } //Invalid header size, come out. printf("\nInvalid VIA header. VIA header length should be 6 or 24 characters\n");
