Updated Branches:
  refs/heads/master 2bb5bb069 -> d1b18044c

TS-1205 double free when RecDataSet in cluster mode

a quick fix for the safe free.


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

Branch: refs/heads/master
Commit: d1b18044c473dd0c8d1964084d7ca66968fc0551
Parents: 2bb5bb0
Author: Zhao Yongming <[email protected]>
Authored: Wed Apr 25 20:13:12 2012 +0800
Committer: Zhao Yongming <[email protected]>
Committed: Wed Apr 25 22:45:52 2012 +0800

----------------------------------------------------------------------
 CHANGES                 |    2 ++
 lib/records/RecUtils.cc |    2 +-
 2 files changed, 3 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d1b18044/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 36138dc..f1c9950 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 3.1.4
+  *) [TS-1205] double free when RecDataSet in cluster mode
+
   *) [TS-1220] stats: cleanup and fix the wrong values.
 
   *) [TS-1212] can not limit ram cache, also fix the stats.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d1b18044/lib/records/RecUtils.cc
----------------------------------------------------------------------
diff --git a/lib/records/RecUtils.cc b/lib/records/RecUtils.cc
index b47310f..a337efc 100644
--- a/lib/records/RecUtils.cc
+++ b/lib/records/RecUtils.cc
@@ -86,7 +86,7 @@ RecDataSet(RecDataT data_type, RecData * data_dst, RecData * 
data_src)
       }
     } else if (((data_dst->rec_string) && (strcmp(data_dst->rec_string, 
data_src->rec_string) != 0)) ||
                ((data_dst->rec_string == NULL) && (data_src->rec_string != 
NULL))) {
-      ats_free(data_dst->rec_string);
+      if (data_dst->rec_string) ats_free(data_dst->rec_string);
       data_dst->rec_string = ats_strdup(data_src->rec_string);
       rec_set = true;
     }

Reply via email to