diff options
author | Ulrich Sibiller <uli42@gmx.de> | 2017-12-27 19:16:15 +0100 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2017-12-29 02:31:26 +0100 |
commit | ce293647d5a63726c05260ca0e0f65a50e604ebb (patch) | |
tree | 68da5d82e3f0beb5805c6a7ea0afcbcddb311b1b | |
parent | 17d045826ba98a55696cc56ebf6b56c811bf5392 (diff) | |
download | nx-libs-ce293647d5a63726c05260ca0e0f65a50e604ebb.tar.gz nx-libs-ce293647d5a63726c05260ca0e0f65a50e604ebb.tar.bz2 nx-libs-ce293647d5a63726c05260ca0e0f65a50e604ebb.zip |
ChannelEndPoint.cpp: fix possible memleak in getUnixPath()
-rw-r--r-- | nxcomp/src/ChannelEndPoint.cpp | 8 | ||||
-rw-r--r-- | nxcomp/src/Loop.cpp | 1 | ||||
-rw-r--r-- | nxcomp/src/Proxy.cpp | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/nxcomp/src/ChannelEndPoint.cpp b/nxcomp/src/ChannelEndPoint.cpp index 443c0f290..7768df137 100644 --- a/nxcomp/src/ChannelEndPoint.cpp +++ b/nxcomp/src/ChannelEndPoint.cpp @@ -207,7 +207,10 @@ ChannelEndPoint::getPort(long *port) const { bool ChannelEndPoint::getUnixPath(char **unixPath) const { - if (unixPath) *unixPath = NULL; + if (unixPath) + *unixPath = NULL; + else + return false; long p; char *path = NULL; @@ -227,8 +230,7 @@ ChannelEndPoint::getUnixPath(char **unixPath) const { return false; } - if (unixPath) - *unixPath = strdup(path); + *unixPath = strdup(path); return true; } diff --git a/nxcomp/src/Loop.cpp b/nxcomp/src/Loop.cpp index ab7ea5a0f..1e770380f 100644 --- a/nxcomp/src/Loop.cpp +++ b/nxcomp/src/Loop.cpp @@ -6661,6 +6661,7 @@ int ConnectToRemote(ChannelEndPoint &socketAddress) << "'.\n" << std::flush; SAFE_FREE(hostName); + SAFE_FREE(unixPath); if (socketAddress.getUnixPath(&unixPath)) result = PrepareProxyConnectionUnix(&unixPath, &connectTimeout, &pFD, &reason); diff --git a/nxcomp/src/Proxy.cpp b/nxcomp/src/Proxy.cpp index 71ea090e6..7f72fae3f 100644 --- a/nxcomp/src/Proxy.cpp +++ b/nxcomp/src/Proxy.cpp @@ -6123,7 +6123,7 @@ int Proxy::handleNewSlaveConnection(int clientFd) int Proxy::handleNewGenericConnectionFromProxy(int channelId, T_channel_type type, ChannelEndPoint &endPoint, const char *label) { - char *unixPath, *host = NULL; + char *unixPath = NULL, *host = NULL; long port; if (endPoint.getUnixPath(&unixPath)) { |