diff --git a/src/base/socket.cc b/src/base/socket.cc index 76dc73f5fd..62f20717f4 100644 --- a/src/base/socket.cc +++ b/src/base/socket.cc @@ -261,15 +261,12 @@ listenSocketInetConfig(int port) }); } -std::string -ListenSocketUnix::truncate(const std::string &original, size_t max_len) +void +ListenSocketUnix::checkPathLength(const std::string &original, size_t max_len) { - if (original.size() <= max_len) - return original; - - std::string truncated = original.substr(0, max_len); - warn("%s: Truncated \"%s\" to \"%s\"", name(), original, truncated); - return truncated; + fatal_if(original.size() > max_len, + "Length of socket path '%s' is %d, greater than max %d.", + original, original.size(), max_len); } void @@ -303,9 +300,9 @@ ListenSocketUnix::listen() ListenSocketUnixFile::ListenSocketUnixFile(const std::string &_name, const std::string &_dir, const std::string &_fname) : - ListenSocketUnix(_name), dir(_dir), - fname(truncate(_fname, sizeof(sockaddr_un::sun_path) - 1)) + ListenSocketUnix(_name), dir(_dir), fname(_fname) { + checkPathLength(fname, sizeof(sockaddr_un::sun_path) - 1); } ListenSocketUnixFile::~ListenSocketUnixFile() @@ -385,9 +382,9 @@ ListenSocketUnixAbstract::prepSockaddrUn(sockaddr_un &addr) const ListenSocketUnixAbstract::ListenSocketUnixAbstract( const std::string &_name, const std::string &_path) : - ListenSocketUnix(_name), - path(truncate(_path, sizeof(sockaddr_un::sun_path) - 1)) + ListenSocketUnix(_name), path(_path) { + checkPathLength(path, sizeof(sockaddr_un::sun_path) - 1); } void diff --git a/src/base/socket.hh b/src/base/socket.hh index b8828e7f43..bc1721358f 100644 --- a/src/base/socket.hh +++ b/src/base/socket.hh @@ -162,7 +162,7 @@ class ListenSocketUnix : public ListenSocket protected: virtual size_t prepSockaddrUn(sockaddr_un &addr) const = 0; - std::string truncate(const std::string &original, size_t max_len); + void checkPathLength(const std::string &original, size_t max_len); ListenSocketUnix(const std::string &_name) : ListenSocket(_name) {}