Repository: trafficserver Updated Branches: refs/heads/master e7d02d92a -> ec864547c
TS-3287: Fix segfault in traffic_via Initialize viaData to 0 and make sure it is valid before printing. Return NULL on invalid ViaLookup. Fix tests to match corrected output. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/ec864547 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/ec864547 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/ec864547 Branch: refs/heads/master Commit: ec864547cbe352d04fab122526a4dd090d3a9e81 Parents: e7d02d9 Author: Phil Sorber <[email protected]> Authored: Fri Jan 30 01:56:38 2015 -0700 Committer: Phil Sorber <[email protected]> Committed: Fri Jan 30 02:00:12 2015 -0700 ---------------------------------------------------------------------- cmd/traffic_via/tests/long rubbish via code 24 | 3 --- cmd/traffic_via/tests/short | 1 - cmd/traffic_via/traffic_via.cc | 10 +++++----- 3 files changed, 5 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ec864547/cmd/traffic_via/tests/long rubbish via code 24 ---------------------------------------------------------------------- diff --git a/cmd/traffic_via/tests/long rubbish via code 24 b/cmd/traffic_via/tests/long rubbish via code 24 index 164f97e..536f4ad 100644 --- a/cmd/traffic_via/tests/long rubbish via code 24 +++ b/cmd/traffic_via/tests/long rubbish via code 24 @@ -14,7 +14,4 @@ traffic_via: Invalid VIA header character: o traffic_via: Invalid VIA header character: d Via header is long rubbish via code 24, Length is 24 Via Header Details: -(null) :(null) -(null) :no server connection needed -(null) :no server connection needed Error codes (if any) :unknown http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ec864547/cmd/traffic_via/tests/short ---------------------------------------------------------------------- diff --git a/cmd/traffic_via/tests/short b/cmd/traffic_via/tests/short index 9779b50..c0f098c 100644 --- a/cmd/traffic_via/tests/short +++ b/cmd/traffic_via/tests/short @@ -4,4 +4,3 @@ traffic_via: Invalid VIA header character: r traffic_via: Invalid VIA header character: t Via header is short, Length is 5 Via Header Details: -(null) :no server connection needed http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ec864547/cmd/traffic_via/traffic_via.cc ---------------------------------------------------------------------- diff --git a/cmd/traffic_via/traffic_via.cc b/cmd/traffic_via/traffic_via.cc index 4d99a6a..b326bbb 100644 --- a/cmd/traffic_via/traffic_via.cc +++ b/cmd/traffic_via/traffic_via.cc @@ -45,8 +45,8 @@ static AppVersionInfo appVersionInfo; struct VIA { - VIA() : title(NULL), next(NULL) { } - VIA(const char * t) : title(t), next(NULL) { } + VIA() : title(NULL), next(NULL) { memset(viaData, 0, sizeof(viaData)); } + VIA(const char * t) : title(t), next(NULL) { memset(viaData, 0, sizeof(viaData)); } ~VIA() { delete next; @@ -117,7 +117,7 @@ detailViaLookup(char flag) viaTable->viaData[(unsigned char) 'F'] = "connection open failed"; break; default: - viaTable = new VIA(); + viaTable = NULL; fprintf(stderr, "%s: %s: %c\n", appVersionInfo.AppStr, "Invalid VIA header character",flag); break; } @@ -186,7 +186,7 @@ standardViaLookup(char flag) viaTable->viaData[(unsigned char) ' '] = "unknown"; break; default: - viaTable = new VIA(); + viaTable = NULL; fprintf(stderr, "%s: %s: %c\n", appVersionInfo.AppStr, "Invalid VIA header character",flag); break; } @@ -219,7 +219,7 @@ printViaHeader(const char * header) // This is a one of the sequence of (uppercase) VIA codes. if (viaEntry) { printf("%-55s:", viaEntry->title); - printf("%s\n", viaEntry->viaData[(unsigned char)*c]); + printf("%s\n", viaEntry->viaData[(unsigned char)*c] ? viaEntry->viaData[(unsigned char)*c] : "Invalid sequence"); viaEntry = viaEntry->next; } }
