Updated Branches:
  refs/heads/master 0cb47fa4a -> c134071e8

TS-2408: fix double free of proxy.config.admin.user_id


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

Branch: refs/heads/master
Commit: c134071e860a11c01d7ce1cd8914d890b9311d34
Parents: 0cb47fa
Author: James Peach <[email protected]>
Authored: Thu Nov 28 10:17:58 2013 -0800
Committer: James Peach <[email protected]>
Committed: Thu Nov 28 10:18:41 2013 -0800

----------------------------------------------------------------------
 CHANGES               | 2 ++
 lib/ts/ink_resource.h | 2 +-
 proxy/Main.cc         | 4 +---
 3 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c134071e/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 4f1ec3a..78f7103 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,8 @@
 Changes with Apache Traffic Server 4.2.0
 
 
+  *) [TS-2408] Fix double free of proxy.config.admin.user_id.
+
   *) [TS-2396] UrlRewrite.cc does not free the queue correctly.
    Author: Yu Qing <[email protected]>
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c134071e/lib/ts/ink_resource.h
----------------------------------------------------------------------
diff --git a/lib/ts/ink_resource.h b/lib/ts/ink_resource.h
index 0fdf2e2..ba4f17a 100644
--- a/lib/ts/ink_resource.h
+++ b/lib/ts/ink_resource.h
@@ -81,7 +81,7 @@ public:
 
   /// Construct and initialized with memory for @a n instances of @a T.
   explicit xptr(size_t n)
-    : m_ptr(ats_malloc(sizeof(T) * n))
+    : m_ptr((T *)ats_malloc(sizeof(T) * n))
   { }
 
   /// Destructor - free memory held by this instance.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c134071e/proxy/Main.cc
----------------------------------------------------------------------
diff --git a/proxy/Main.cc b/proxy/Main.cc
index 431d94c..318e825 100644
--- a/proxy/Main.cc
+++ b/proxy/Main.cc
@@ -1362,7 +1362,7 @@ main(int /* argc ATS_UNUSED */, char **argv)
   if (!num_task_threads)
     TS_ReadConfigInteger(num_task_threads, "proxy.config.task_threads");
 
-  char *user = (char *)ats_malloc(MAX_LOGIN);
+  xptr<char> user(MAX_LOGIN + 1);
 
   *user = '\0';
   admin_user_p = ((REC_ERR_OKAY == TS_ReadConfigString(user, 
"proxy.config.admin.user_id", MAX_LOGIN)) &&
@@ -1379,7 +1379,6 @@ main(int /* argc ATS_UNUSED */, char **argv)
     PreserveCapabilities();
     change_uid_gid(user);
     RestrictCapabilities();
-    ats_free(user);
   }
 # endif
 
@@ -1678,7 +1677,6 @@ main(int /* argc ATS_UNUSED */, char **argv)
   if (admin_user_p) {
     change_uid_gid(user);
     DebugCapabilities("server");
-    ats_free(user);
   }
 # endif
 

Reply via email to