You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2015/01/31 01:10:15 UTC

trafficserver git commit: TS-3353: fix traffic_via memory bug

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 <bz...@linkedin.com>
Authored: Fri Jan 30 16:07:13 2015 -0800
Committer: James Peach <jp...@apache.org>
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 <bz...@linkedin.com>
+
   *) [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 <la...@vmail.se>
 

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