Repository: thrift
Updated Branches:
  refs/heads/master a175437f6 -> d9d512085


THRIFT-3237 Fix TNamedPipeServer::createNamedPipe memory leak

Client: cpp
Patch: Paweł Janicki & James E. King, III
This closes #632


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

Branch: refs/heads/master
Commit: d9d51208549d0fe630791847b2904410c418d829
Parents: a175437
Author: Roger Meier <[email protected]>
Authored: Sun Oct 11 09:13:37 2015 +0200
Committer: Roger Meier <[email protected]>
Committed: Sun Oct 11 09:13:37 2015 +0200

----------------------------------------------------------------------
 lib/cpp/src/thrift/transport/TPipeServer.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/d9d51208/lib/cpp/src/thrift/transport/TPipeServer.cpp
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/transport/TPipeServer.cpp 
b/lib/cpp/src/thrift/transport/TPipeServer.cpp
index baa2603..7923102 100644
--- a/lib/cpp/src/thrift/transport/TPipeServer.cpp
+++ b/lib/cpp/src/thrift/transport/TPipeServer.cpp
@@ -351,12 +351,17 @@ bool TNamedPipeServer::createNamedPipe(const TAutoCrit & 
/*lockProof*/) {
                                      0,                    // client time-out
                                      &sa));                // security 
attributes
 
+  DWORD lastError = GetLastError();
+  LocalFree(sd);
+  LocalFree(acl);
+  FreeSid(everyone_sid);
+
   if (hPipe.h == INVALID_HANDLE_VALUE) {
     Pipe_.reset();
-    GlobalOutput.perror("TPipeServer::TCreateNamedPipe() GLE=", 
GetLastError());
+    GlobalOutput.perror("TPipeServer::TCreateNamedPipe() GLE=", lastError);
     throw TTransportException(TTransportException::NOT_OPEN,
                               "TCreateNamedPipe() failed",
-                              GetLastError());
+                                                         lastError);
     return false;
   }
 

Reply via email to