From: Remi Gacogne Date: Thu, 7 Dec 2023 15:54:37 +0000 (+0100) Subject: dnsdist: Delint dnsdist-lua-network.cc X-Git-Tag: dnsdist-1.9.0-alpha4~17^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F13584%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Delint dnsdist-lua-network.cc --- diff --git a/pdns/dnsdistdist/dnsdist-lua-network.cc b/pdns/dnsdistdist/dnsdist-lua-network.cc index 5a2e3c2f00..56a58cd5cf 100644 --- a/pdns/dnsdistdist/dnsdist-lua-network.cc +++ b/pdns/dnsdistdist/dnsdist-lua-network.cc @@ -50,24 +50,26 @@ void NetworkListener::readCB(int desc, FDMultiplexer::funcparam_t& param) #ifdef MSG_TRUNC /* first we peek to avoid allocating a very large buffer. "MSG_TRUNC [...] return the real length of the datagram, even when it was longer than the passed buffer" */ - auto peeked = recvfrom(desc, nullptr, 0, MSG_PEEK | MSG_TRUNC, nullptr, 0); + auto peeked = recvfrom(desc, nullptr, 0, MSG_PEEK | MSG_TRUNC, nullptr, nullptr); if (peeked > 0) { packet.resize(static_cast(peeked)); } #endif - if (packet.size() == 0) { + if (packet.empty()) { packet.resize(65535); } - struct sockaddr_un from; + sockaddr_un from{}; memset(&from, 0, sizeof(from)); socklen_t fromLen = sizeof(from); + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) auto got = recvfrom(desc, &packet.at(0), packet.size(), 0, reinterpret_cast(&from), &fromLen); if (got > 0) { packet.resize(static_cast(got)); std::string fromAddr; if (fromLen <= sizeof(from)) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-array-to-pointer-decay) fromAddr = std::string(from.sun_path, strlen(from.sun_path)); } try { @@ -82,13 +84,13 @@ void NetworkListener::readCB(int desc, FDMultiplexer::funcparam_t& param) } } -bool NetworkListener::addUnixListeningEndpoint(const std::string& path, NetworkListener::EndpointID id, NetworkListener::NetworkDatagramCB cb) +bool NetworkListener::addUnixListeningEndpoint(const std::string& path, NetworkListener::EndpointID endpointID, NetworkListener::NetworkDatagramCB callback) { - if (d_data->d_running == true) { + if (d_data->d_running) { throw std::runtime_error("NetworkListener should not be altered at runtime"); } - struct sockaddr_un sun; + sockaddr_un sun{}; if (makeUNsockaddr(path, &sun) != 0) { throw std::runtime_error("Invalid Unix socket path '" + path + "'"); } @@ -111,6 +113,7 @@ bool NetworkListener::addUnixListeningEndpoint(const std::string& path, NetworkL sunLength = sizeof(sa_family_t) + path.size(); } + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) if (bind(sock.getHandle(), reinterpret_cast(&sun), sunLength) != 0) { std::string sanitizedPath(path); if (abstractPath) { @@ -122,8 +125,8 @@ bool NetworkListener::addUnixListeningEndpoint(const std::string& path, NetworkL sock.setNonBlocking(); auto cbData = std::make_shared(); - cbData->d_endpoint = id; - cbData->d_cb = std::move(cb); + cbData->d_endpoint = endpointID; + cbData->d_cb = std::move(callback); d_data->d_mplexer->addReadFD(sock.getHandle(), readCB, cbData); d_data->d_sockets.insert({path, std::move(sock)}); @@ -141,7 +144,7 @@ void NetworkListener::runOnce(ListenerData& data, timeval& now, uint32_t timeout throw runtime_error("NetworkListener started with no sockets"); } - data.d_mplexer->run(&now, timeout); + data.d_mplexer->run(&now, static_cast(timeout)); } void NetworkListener::runOnce(timeval& now, uint32_t timeout) @@ -153,6 +156,7 @@ void NetworkListener::mainThread(std::shared_ptr& dataArg) { /* take our own copy of the shared_ptr so it's still alive if the NetworkListener object gets destroyed while we are still running */ + // NOLINTNEXTLINE(performance-unnecessary-copy-initialization): we really need a copy here, or we end up with use-after-free as explained above auto data = dataArg; setThreadName("dnsdist/lua-net"); timeval now{}; @@ -173,7 +177,7 @@ void NetworkListener::start() NetworkEndpoint::NetworkEndpoint(const std::string& path) : d_socket(AF_UNIX, SOCK_DGRAM, 0) { - struct sockaddr_un sun; + sockaddr_un sun{}; if (makeUNsockaddr(path, &sun) != 0) { throw std::runtime_error("Invalid Unix socket path '" + path + "'"); } @@ -185,6 +189,7 @@ NetworkEndpoint::NetworkEndpoint(const std::string& path) : /* abstract paths can contain null bytes so we need to set the actual size */ sunLength = sizeof(sa_family_t) + path.size(); } + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) if (connect(d_socket.getHandle(), reinterpret_cast(&sun), sunLength) != 0) { std::string sanitizedPath(path); if (abstractPath) { diff --git a/pdns/dnsdistdist/dnsdist-lua-network.hh b/pdns/dnsdistdist/dnsdist-lua-network.hh index 3d12f63acd..3cd2f08442 100644 --- a/pdns/dnsdistdist/dnsdist-lua-network.hh +++ b/pdns/dnsdistdist/dnsdist-lua-network.hh @@ -42,7 +42,7 @@ public: using EndpointID = uint16_t; using NetworkDatagramCB = std::function; - bool addUnixListeningEndpoint(const std::string& path, EndpointID id, NetworkDatagramCB cb); + bool addUnixListeningEndpoint(const std::string& path, EndpointID endpointID, NetworkDatagramCB callback); void start(); void runOnce(timeval& now, uint32_t timeout);