aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2017-12-27 19:16:15 +0100
committerUlrich Sibiller <uli42@gmx.de>2017-12-29 02:31:26 +0100
commitce293647d5a63726c05260ca0e0f65a50e604ebb (patch)
tree68da5d82e3f0beb5805c6a7ea0afcbcddb311b1b
parent17d045826ba98a55696cc56ebf6b56c811bf5392 (diff)
downloadnx-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.cpp8
-rw-r--r--nxcomp/src/Loop.cpp1
-rw-r--r--nxcomp/src/Proxy.cpp2
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)) {