aboutsummaryrefslogtreecommitdiff
path: root/nxcomp/src/Loop.cpp
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2017-12-07 22:35:59 +0100
committerMihai Moldovan <ionic@ionic.de>2017-12-09 13:15:35 +0100
commit4dbee3a3f13657577f283bca22b281d7273c19e5 (patch)
tree638d62dce7a3e1f4245cb53212e3e422f310be99 /nxcomp/src/Loop.cpp
parent2814677a7e2b259669708c89ed55b55dc1c46f9c (diff)
downloadnx-libs-4dbee3a3f13657577f283bca22b281d7273c19e5.tar.gz
nx-libs-4dbee3a3f13657577f283bca22b281d7273c19e5.tar.bz2
nx-libs-4dbee3a3f13657577f283bca22b281d7273c19e5.zip
nxcomp: use new macro SAFE_FREE(ptr)
Should be used instead of free() calls and will clear the pointer after calling free(). This can prevent double-free or use-after-free errors.
Diffstat (limited to 'nxcomp/src/Loop.cpp')
-rw-r--r--nxcomp/src/Loop.cpp33
1 files changed, 13 insertions, 20 deletions
diff --git a/nxcomp/src/Loop.cpp b/nxcomp/src/Loop.cpp
index ca9e5ed08..baad17699 100644
--- a/nxcomp/src/Loop.cpp
+++ b/nxcomp/src/Loop.cpp
@@ -3187,8 +3187,7 @@ int SetupProxyConnection()
nxinfo << "Loop: listenSocket is "<< ( listenSocket.enabled() ? "enabled" : "disabled") << ". "
<< "The socket URI is '"<< ( socketUri != NULL ? socketUri : "<unset>") << "'.\n" << std::flush;
- free(socketUri);
- socketUri = NULL;
+ SAFE_FREE(socketUri);
if (WE_INITIATE_CONNECTION)
{
@@ -3196,7 +3195,7 @@ int SetupProxyConnection()
{
nxinfo << "Loop: Going to connect to '" << socketUri
<< "'.\n" << std::flush;
- free(socketUri);
+ SAFE_FREE(socketUri);
proxyFD = ConnectToRemote(connectSocket);
@@ -3219,7 +3218,7 @@ int SetupProxyConnection()
{
nxinfo << "Loop: Going to wait for connection at '"
<< socketUri << "'.\n" << std::flush;
- free(socketUri);
+ SAFE_FREE(socketUri);
proxyFD = WaitForRemote(listenSocket);
@@ -4287,10 +4286,8 @@ int ListenConnection(ChannelEndPoint &endpoint, const char *label)
else if (endpoint.getTCPHostAndPort(&host, &port)) {
result = ListenConnectionTCP(host, port, label);
}
- free(unixPath);
- unixPath = NULL;
- free(host);
- host = NULL;
+ SAFE_FREE(unixPath);
+ SAFE_FREE(host);
return result;
}
@@ -6222,7 +6219,7 @@ int WaitForRemote(ChannelEndPoint &socketAddress)
cerr << "Info" << ": Waiting for connection from "
<< hostLabel << " on socket '" << socketUri
<< "'.\n";
- free(socketUri);
+ SAFE_FREE(socketUri);
//
// How many times to loop waiting for connections
@@ -6311,7 +6308,7 @@ int WaitForRemote(ChannelEndPoint &socketAddress)
cerr << "Info" << ": Accepted connection from this host on Unix file socket '"
<< unixPath << "'.\n";
- free(unixPath);
+ SAFE_FREE(unixPath);
break;
}
@@ -6744,19 +6741,15 @@ int ConnectToRemote(ChannelEndPoint &socketAddress)
}
}
- free(unixPath);
- unixPath = NULL;
- free(hostName);
- hostName = NULL;
+ SAFE_FREE(unixPath);
+ SAFE_FREE(hostName);
return pFD;
ConnectToRemoteError:
- free(unixPath);
- unixPath = NULL;
- free(hostName);
- hostName = NULL;
+ SAFE_FREE(unixPath);
+ SAFE_FREE(hostName);
if (pFD != -1)
{
@@ -7953,7 +7946,7 @@ int ParseEnvironmentOptions(const char *env, int force)
cerr << "Error" << ": Refusing 'listen' parameter with 'connect' being '"
<< socketUri << "'.\n";
- free(socketUri);
+ SAFE_FREE(socketUri);
return -1;
}
@@ -7981,7 +7974,7 @@ int ParseEnvironmentOptions(const char *env, int force)
cerr << "Error" << ": Refusing 'accept' parameter with 'connect' being '"
<< socketUri << "'.\n";
- free(socketUri);
+ SAFE_FREE(socketUri);
return -1;
}