From c43570b633ee945618c57720b2e7af607b36513a Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Mon, 20 Nov 2023 12:09:55 +0100 Subject: [PATCH] dnsdist: Fix unnecessary copies reported by Coverity Most of these are in places where performance does not matter, but still. --- pdns/dnscrypt.cc | 2 +- pdns/dnsdist-lua-actions.cc | 8 ++++---- pdns/dnsdist-lua-bindings.cc | 16 ++++++++-------- pdns/dnsdist-lua.cc | 12 ++++++------ pdns/dnsdist.cc | 2 +- pdns/dnsdist.hh | 4 ++-- pdns/dnsdistdist/dnsdist-discovery.cc | 2 +- pdns/dnsdistdist/dnsdist-lbpolicies.cc | 2 +- .../dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc | 2 +- .../dnsdist-lua-bindings-dnsparser.cc | 2 +- pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc | 8 ++++---- pdns/dnsdistdist/dnsdist-lua-ffi.cc | 2 +- pdns/dnsdistdist/dnsdist-nghttp2.cc | 8 ++++---- pdns/dnsdistdist/dnsdist-tcp-downstream.cc | 2 +- pdns/dnsdistdist/doh.cc | 2 +- pdns/dnsdistdist/tcpiohandler-mplexer.hh | 8 ++++---- pdns/libssl.cc | 2 +- pdns/tcpiohandler.cc | 2 +- 18 files changed, 43 insertions(+), 43 deletions(-) diff --git a/pdns/dnscrypt.cc b/pdns/dnscrypt.cc index 372329bdfc..9be46d722f 100644 --- a/pdns/dnscrypt.cc +++ b/pdns/dnscrypt.cc @@ -419,7 +419,7 @@ bool DNSCryptQuery::parsePlaintextQuery(const PacketBuffer& packet) return false; } - d_qname = qname; + d_qname = std::move(qname); d_id = dh->id; d_valid = true; diff --git a/pdns/dnsdist-lua-actions.cc b/pdns/dnsdist-lua-actions.cc index 575c8f3465..4caaa97d57 100644 --- a/pdns/dnsdist-lua-actions.cc +++ b/pdns/dnsdist-lua-actions.cc @@ -1194,7 +1194,7 @@ private: setbuf(fp.get(), 0); } - std::atomic_store_explicit(&d_fp, fp, std::memory_order_release); + std::atomic_store_explicit(&d_fp, std::move(fp), std::memory_order_release); return true; } @@ -1283,7 +1283,7 @@ private: setbuf(fp.get(), 0); } - std::atomic_store_explicit(&d_fp, fp, std::memory_order_release); + std::atomic_store_explicit(&d_fp, std::move(fp), std::memory_order_release); return true; } @@ -2660,7 +2660,7 @@ void setupLuaActions(LuaContext& luaCtx) std::string tags; RemoteLogActionConfiguration config; - config.logger = logger; + config.logger = std::move(logger); config.alterQueryFunc = std::move(alterFunc); getOptionalValue(vars, "serverID", config.serverID); getOptionalValue(vars, "ipEncryptKey", config.ipEncryptKey); @@ -2700,7 +2700,7 @@ void setupLuaActions(LuaContext& luaCtx) std::string tags; RemoteLogActionConfiguration config; - config.logger = logger; + config.logger = std::move(logger); config.alterResponseFunc = alterFunc; config.includeCNAME = includeCNAME ? *includeCNAME : false; getOptionalValue(vars, "serverID", config.serverID); diff --git a/pdns/dnsdist-lua-bindings.cc b/pdns/dnsdist-lua-bindings.cc index 35a950590b..9f393f1691 100644 --- a/pdns/dnsdist-lua-bindings.cc +++ b/pdns/dnsdist-lua-bindings.cc @@ -283,24 +283,24 @@ void setupLuaBindings(LuaContext& luaCtx, bool client) /* SuffixMatchNode */ luaCtx.registerFunction, LuaArray> &name)>("add", [](SuffixMatchNode &smn, const boost::variant, LuaArray> &name) { if (name.type() == typeid(DNSName)) { - auto n = boost::get(name); + const auto& n = boost::get(name); smn.add(n); return; } if (name.type() == typeid(std::string)) { - auto n = boost::get(name); + const auto& n = boost::get(name); smn.add(n); return; } if (name.type() == typeid(LuaArray)) { - auto names = boost::get>(name); + const auto& names = boost::get>(name); for (const auto& n : names) { smn.add(n.second); } return; } if (name.type() == typeid(LuaArray)) { - auto names = boost::get>(name); + const auto& names = boost::get>(name); for (const auto& n : names) { smn.add(n.second); } @@ -314,7 +314,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client) return; } if (name.type() == typeid(string)) { - auto n = boost::get(name); + const auto& n = boost::get(name); DNSName d(n); smn.remove(d); return; @@ -351,14 +351,14 @@ void setupLuaBindings(LuaContext& luaCtx, bool client) /* Netmask */ luaCtx.writeFunction("newNetmask", [](boost::variant s, boost::optional bits) { if (s.type() == typeid(ComboAddress)) { - auto ca = boost::get(s); + const auto& ca = boost::get(s); if (bits) { return Netmask(ca, *bits); } return Netmask(ca); } else if (s.type() == typeid(std::string)) { - auto str = boost::get(s); + const auto& str = boost::get(s); return Netmask(str); } throw std::runtime_error("Invalid parameter passed to 'newNetmask()'"); @@ -479,7 +479,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client) auto& params = boost::get(tmp); config.d_pinnedPath = std::move(params); } - mapsConfig[name] = config; + mapsConfig[name] = std::move(config); }; convertParamsToConfig("ipv4", BPFFilter::MapType::IPv4); diff --git a/pdns/dnsdist-lua.cc b/pdns/dnsdist-lua.cc index 09d9c5a344..c6049a4819 100644 --- a/pdns/dnsdist-lua.cc +++ b/pdns/dnsdist-lua.cc @@ -1230,7 +1230,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) errlog("%s", g_outputBuffer); } else - g_consoleKey = newkey; + g_consoleKey = std::move(newkey); }); luaCtx.writeFunction("clearConsoleHistory", []() { @@ -1463,7 +1463,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) if (!got || expired) { warnlog("Inserting dynamic block for %s for %d seconds: %s", capair.first.toString(), actualSeconds, msg); } - slow.insert(requestor).second = db; + slow.insert(requestor).second = std::move(db); } g_dynblockNMG.setState(slow); }); @@ -1577,7 +1577,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) /* TCP */ cs = std::make_unique(ComboAddress(addr, 443), true, reusePort, tcpFastOpenQueueSize, interface, cpus); - cs->dnscryptCtx = ctx; + cs->dnscryptCtx = std::move(ctx); if (tcpListenQueueSize > 0) { cs->tcpListenQueueSize = tcpListenQueueSize; } @@ -2318,7 +2318,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) password = boost::get((*opts)["password"]); } } - result = std::make_shared(TLSCertKeyPair{cert, key, password}); + result = std::make_shared(cert, std::move(key), std::move(password)); #endif return result; }); @@ -2472,7 +2472,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) g_dohlocals.push_back(frontend); auto cs = std::make_unique(frontend->d_tlsContext.d_addr, true, reusePort, tcpFastOpenQueueSize, interface, cpus); - cs->dohFrontend = frontend; + cs->dohFrontend = std::move(frontend); cs->d_additionalAddresses = std::move(additionalAddresses); if (tcpListenQueueSize > 0) { @@ -2552,7 +2552,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) } g_doqlocals.push_back(frontend); auto cs = std::make_unique(frontend->d_local, false, reusePort, tcpFastOpenQueueSize, interface, cpus); - cs->doqFrontend = frontend; + cs->doqFrontend = std::move(frontend); cs->d_additionalAddresses = std::move(additionalAddresses); g_frontends.push_back(std::move(cs)); diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index b077138850..a5c1d88735 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -1962,7 +1962,7 @@ static void udpClientThread(std::vector states) } if (params.size() == 1) { - auto param = params.at(0); + const auto& param = params.at(0); remote.sin4.sin_family = param.cs->local.sin4.sin_family; /* used by HarvestDestinationAddress */ cmsgbuf_aligned cbuf; diff --git a/pdns/dnsdist.hh b/pdns/dnsdist.hh index acbc45102e..76c0ef8a16 100644 --- a/pdns/dnsdist.hh +++ b/pdns/dnsdist.hh @@ -604,7 +604,7 @@ struct ClientState } } - void attachFilter(shared_ptr bpf, int socket) + void attachFilter(shared_ptr& bpf, int socket) { detachFilter(socket); @@ -627,7 +627,7 @@ struct ClientState } } - void attachFilter(shared_ptr bpf) + void attachFilter(shared_ptr& bpf) { detachFilter(); diff --git a/pdns/dnsdistdist/dnsdist-discovery.cc b/pdns/dnsdistdist/dnsdist-discovery.cc index 889249d0c0..bba713bb6f 100644 --- a/pdns/dnsdistdist/dnsdist-discovery.cc +++ b/pdns/dnsdistdist/dnsdist-discovery.cc @@ -226,7 +226,7 @@ static bool handleSVCResult(const PacketBuffer& answer, const ComboAddress& exis tempConfig.d_subjectName = resolver.target.toStringNoDot(); tempConfig.d_addr.sin4.sin_port = tempConfig.d_port; - config = tempConfig; + config = std::move(tempConfig); return true; } diff --git a/pdns/dnsdistdist/dnsdist-lbpolicies.cc b/pdns/dnsdistdist/dnsdist-lbpolicies.cc index 783b5ae21a..17f2f5238e 100644 --- a/pdns/dnsdistdist/dnsdist-lbpolicies.cc +++ b/pdns/dnsdistdist/dnsdist-lbpolicies.cc @@ -290,7 +290,7 @@ void setPoolPolicy(pools_t& pools, const string& poolName, std::shared_ptrgetName()); } - pool->policy = policy; + pool->policy = std::move(policy); } void addServerToPool(pools_t& pools, const string& poolName, std::shared_ptr server) diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc index 0385550e0a..114eead045 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc @@ -102,7 +102,7 @@ void setupLuaBindingsDNSCrypt(LuaContext& luaCtx, bool client) ret << (fmt % "#" % "Serial" % "Version" % "From" % "To" ) << endl; for (const auto& pair : ctx->getCertificates()) { - const auto cert = pair->cert; + const auto& cert = pair->cert; const DNSCryptExchangeVersion version = DNSCryptContext::getExchangeVersion(cert); ret << (fmt % idx % cert.getSerial() % (version == DNSCryptExchangeVersion::VERSION1 ? 1 : 2) % DNSCryptContext::certificateDateToStr(cert.getTSStart()) % DNSCryptContext::certificateDateToStr(cert.getTSEnd())) << endl; diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc index 606220ef83..9605314490 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc @@ -31,7 +31,7 @@ void setupLuaBindingsDNSParser(LuaContext& luaCtx) return dpo; }); - luaCtx.registerMember(std::string("qname"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_qname; }); + luaCtx.registerMember(std::string("qname"), [](const dnsdist::DNSPacketOverlay& overlay) -> const DNSName& { return overlay.d_qname; }); luaCtx.registerMember(std::string("qtype"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_qtype; }); luaCtx.registerMember(std::string("qclass"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_qclass; }); luaCtx.registerMember(std::string("dh"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_header; }); diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc index 4bf83a51bc..059bce7bb0 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc @@ -85,15 +85,15 @@ void setupLuaBindingsRings(LuaContext& luaCtx, bool client) return results; }); - luaCtx.registerMember(std::string("qname"), [](const LuaRingEntry& entry) { + luaCtx.registerMember(std::string("qname"), [](const LuaRingEntry& entry) -> const DNSName& { return entry.qname; }); - luaCtx.registerMember(std::string("requestor"), [](const LuaRingEntry& entry) { + luaCtx.registerMember(std::string("requestor"), [](const LuaRingEntry& entry) -> const ComboAddress& { return entry.requestor; }); - luaCtx.registerMember(std::string("backend"), [](const LuaRingEntry& entry) { + luaCtx.registerMember(std::string("backend"), [](const LuaRingEntry& entry) -> const ComboAddress& { return entry.ds; }); @@ -101,7 +101,7 @@ void setupLuaBindingsRings(LuaContext& luaCtx, bool client) return entry.when; }); - luaCtx.registerMember(std::string("macAddress"), [](const LuaRingEntry& entry) { + luaCtx.registerMember(std::string("macAddress"), [](const LuaRingEntry& entry) -> const std::string& { return entry.macAddr; }); diff --git a/pdns/dnsdistdist/dnsdist-lua-ffi.cc b/pdns/dnsdistdist/dnsdist-lua-ffi.cc index f7365bf771..917348c26b 100644 --- a/pdns/dnsdistdist/dnsdist-lua-ffi.cc +++ b/pdns/dnsdistdist/dnsdist-lua-ffi.cc @@ -765,7 +765,7 @@ bool dnsdist_ffi_dnsresponse_rebase(dnsdist_ffi_dnsresponse_t* dr, const char* i } // set qname to new one - dr->dr->ids.qname = parsed; + dr->dr->ids.qname = std::move(parsed); dr->dr->ids.skipCache = true; } catch (const std::exception& e) { diff --git a/pdns/dnsdistdist/dnsdist-nghttp2.cc b/pdns/dnsdistdist/dnsdist-nghttp2.cc index 0db65fb38a..bf1666f842 100644 --- a/pdns/dnsdistdist/dnsdist-nghttp2.cc +++ b/pdns/dnsdistdist/dnsdist-nghttp2.cc @@ -94,7 +94,7 @@ private: uint16_t d_responseCode{0}; bool d_finished{false}; }; - void updateIO(IOState newState, FDMultiplexer::callbackfunc_t callback, bool noTTD = false); + void updateIO(IOState newState, const FDMultiplexer::callbackfunc_t& callback, bool noTTD = false); void watchForRemoteHostClosingConnection(); void handleResponse(PendingRequest&& request); void handleResponseError(PendingRequest&& request, const struct timeval& now); @@ -468,7 +468,7 @@ void DoHConnectionToBackend::stopIO() } } -void DoHConnectionToBackend::updateIO(IOState newState, FDMultiplexer::callbackfunc_t callback, bool noTTD) +void DoHConnectionToBackend::updateIO(IOState newState, const FDMultiplexer::callbackfunc_t& callback, bool noTTD) { struct timeval now { @@ -496,10 +496,10 @@ void DoHConnectionToBackend::updateIO(IOState newState, FDMultiplexer::callbackf auto shared = std::dynamic_pointer_cast(shared_from_this()); if (shared) { if (newState == IOState::NeedRead) { - d_ioState->update(newState, callback, shared, ttd); + d_ioState->update(newState, callback, std::move(shared), ttd); } else if (newState == IOState::NeedWrite) { - d_ioState->update(newState, callback, shared, ttd); + d_ioState->update(newState, callback, std::move(shared), ttd); } } } diff --git a/pdns/dnsdistdist/dnsdist-tcp-downstream.cc b/pdns/dnsdistdist/dnsdist-tcp-downstream.cc index f6b4323e7f..930814854a 100644 --- a/pdns/dnsdistdist/dnsdist-tcp-downstream.cc +++ b/pdns/dnsdistdist/dnsdist-tcp-downstream.cc @@ -191,7 +191,7 @@ static bool getSerialFromIXFRQuery(TCPQuery& query) if (!unknownContent) { return false; } - auto raw = unknownContent->getRawContent(); + const auto& raw = unknownContent->getRawContent(); query.d_ixfrQuerySerial = getSerialFromRawSOAContent(raw); return true; } diff --git a/pdns/dnsdistdist/doh.cc b/pdns/dnsdistdist/doh.cc index 47c6d904f2..0ac9e33874 100644 --- a/pdns/dnsdistdist/doh.cc +++ b/pdns/dnsdistdist/doh.cc @@ -1728,7 +1728,7 @@ void H2ODOHFrontend::reloadCertificates() { auto newAcceptContext = std::make_shared(); setupAcceptContext(*newAcceptContext, *d_dsc, true); - std::atomic_store_explicit(&d_dsc->accept_ctx, newAcceptContext, std::memory_order_release); + std::atomic_store_explicit(&d_dsc->accept_ctx, std::move(newAcceptContext), std::memory_order_release); } void H2ODOHFrontend::setup() diff --git a/pdns/dnsdistdist/tcpiohandler-mplexer.hh b/pdns/dnsdistdist/tcpiohandler-mplexer.hh index d62ba7828b..a69c7c1cad 100644 --- a/pdns/dnsdistdist/tcpiohandler-mplexer.hh +++ b/pdns/dnsdistdist/tcpiohandler-mplexer.hh @@ -128,11 +128,11 @@ public: if (isWaitingForWrite()) { d_isWaitingForWrite = false; - d_mplexer.alterFDToRead(d_fd, callback, callbackData, ttd ? &*ttd : nullptr); + d_mplexer.alterFDToRead(d_fd, std::move(callback), callbackData, ttd ? &*ttd : nullptr); DEBUGLOG(__PRETTY_FUNCTION__<<": alter from write to read FD "<, std::vector