From 96ba6190d6743b7ac4449938b287547124cce926 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Thu, 31 Aug 2017 18:17:31 +0200 Subject: nxcomp/src/{Loop,Proxy}.cpp: On Debian/kFreeBSD (and other *BSD variants) the sockaddr_un.sun_path property is 104 chars long, not 108. Hard-coding Unix domain sockets in nxcomp the string length 104. Fixes ArcticaProject/nx-libs#507. --- nxcomp/src/Loop.cpp | 8 ++++++++ nxcomp/src/Proxy.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/nxcomp/src/Loop.cpp b/nxcomp/src/Loop.cpp index b6c82a2b4..f86ee2a4f 100644 --- a/nxcomp/src/Loop.cpp +++ b/nxcomp/src/Loop.cpp @@ -3810,7 +3810,15 @@ int SetupAuthInstance() launchdAddrUnix.sun_family = AF_UNIX; + #ifdef __linux__ const int launchdAddrNameLength = 108; + #else + /* POSIX/SUS does not specify a length. + * BSD derivatives generally support 104 bytes, other systems may be more constrained. + * If you happen to run into such systems, extend this section with the appropriate limit. + */ + const int launchdAddrNameLength = 104; + #endif int success = -1; diff --git a/nxcomp/src/Proxy.cpp b/nxcomp/src/Proxy.cpp index 5529de021..dabf7532e 100644 --- a/nxcomp/src/Proxy.cpp +++ b/nxcomp/src/Proxy.cpp @@ -6294,7 +6294,15 @@ int Proxy::handleNewGenericConnectionFromProxyUnix(int channelId, T_channel_type serverAddrUnix.sun_family = AF_UNIX; + #ifdef __linux__ const int serverAddrNameLength = 108; + #else + /* POSIX/SUS does not specify a length. + * BSD derivatives generally support 104 bytes, other systems may be more constrained. + * If you happen to run into such systems, extend this section with the appropriate limit. + */ + const int serverAddrNameLength = 104; + #endif strncpy(serverAddrUnix.sun_path, path, serverAddrNameLength); -- cgit v1.2.3