]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Fix unnecessary copies reported by Coverity
authorRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 20 Nov 2023 11:09:55 +0000 (12:09 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 20 Nov 2023 11:09:55 +0000 (12:09 +0100)
Most of these are in places where performance does not matter, but
still.

18 files changed:
pdns/dnscrypt.cc
pdns/dnsdist-lua-actions.cc
pdns/dnsdist-lua-bindings.cc
pdns/dnsdist-lua.cc
pdns/dnsdist.cc
pdns/dnsdist.hh
pdns/dnsdistdist/dnsdist-discovery.cc
pdns/dnsdistdist/dnsdist-lbpolicies.cc
pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc
pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc
pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc
pdns/dnsdistdist/dnsdist-lua-ffi.cc
pdns/dnsdistdist/dnsdist-nghttp2.cc
pdns/dnsdistdist/dnsdist-tcp-downstream.cc
pdns/dnsdistdist/doh.cc
pdns/dnsdistdist/tcpiohandler-mplexer.hh
pdns/libssl.cc
pdns/tcpiohandler.cc

index 372329bdfcc03d2a2dda8af25c780c34a8f50bef..9be46d722fab336ac2a6297cb613ee34fc7a98c8 100644 (file)
@@ -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;
 
index 575c8f3465b98cd933aa1247addef6650ac592ea..4caaa97d57000322a51bb60fd8e21b8e33c9a771 100644 (file)
@@ -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<std::string>(vars, "serverID", config.serverID);
       getOptionalValue<std::string>(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<std::string>(vars, "serverID", config.serverID);
index 35a950590bc3d96511578dff8672f53bc1533d1e..9f393f169185be5237eb727711e385575647e216 100644 (file)
@@ -283,24 +283,24 @@ void setupLuaBindings(LuaContext& luaCtx, bool client)
   /* SuffixMatchNode */
   luaCtx.registerFunction<void (SuffixMatchNode::*)(const boost::variant<DNSName, std::string, LuaArray<DNSName>, LuaArray<std::string>> &name)>("add", [](SuffixMatchNode &smn, const boost::variant<DNSName, std::string, LuaArray<DNSName>, LuaArray<std::string>> &name) {
       if (name.type() == typeid(DNSName)) {
-          auto n = boost::get<DNSName>(name);
+          const auto& n = boost::get<DNSName>(name);
           smn.add(n);
           return;
       }
       if (name.type() == typeid(std::string)) {
-          auto n = boost::get<std::string>(name);
+          const auto& n = boost::get<std::string>(name);
           smn.add(n);
           return;
       }
       if (name.type() == typeid(LuaArray<DNSName>)) {
-          auto names = boost::get<LuaArray<DNSName>>(name);
+          const auto& names = boost::get<LuaArray<DNSName>>(name);
           for (const auto& n : names) {
             smn.add(n.second);
           }
           return;
       }
       if (name.type() == typeid(LuaArray<std::string>)) {
-          auto names = boost::get<LuaArray<string>>(name);
+          const auto& names = boost::get<LuaArray<string>>(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<string>(name);
+          const auto& n = boost::get<string>(name);
           DNSName d(n);
           smn.remove(d);
           return;
@@ -351,14 +351,14 @@ void setupLuaBindings(LuaContext& luaCtx, bool client)
   /* Netmask */
   luaCtx.writeFunction("newNetmask", [](boost::variant<std::string,ComboAddress> s, boost::optional<uint8_t> bits) {
     if (s.type() == typeid(ComboAddress)) {
-      auto ca = boost::get<ComboAddress>(s);
+      const auto& ca = boost::get<ComboAddress>(s);
       if (bits) {
         return Netmask(ca, *bits);
       }
       return Netmask(ca);
     }
     else if (s.type() == typeid(std::string)) {
-      auto str = boost::get<std::string>(s);
+      const auto& str = boost::get<std::string>(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<string>(tmp);
           config.d_pinnedPath = std::move(params);
         }
-        mapsConfig[name] = config;
+        mapsConfig[name] = std::move(config);
       };
 
       convertParamsToConfig("ipv4", BPFFilter::MapType::IPv4);
index 09d9c5a34431de79a202846f3d2a5588b0d37be6..c6049a48198ed7cd5dd95654cb6d7e3699b51d25 100644 (file)
@@ -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<ClientState>(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<const string>((*opts)["password"]);
       }
     }
-    result = std::make_shared<TLSCertKeyPair>(TLSCertKeyPair{cert, key, password});
+    result = std::make_shared<TLSCertKeyPair>(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<ClientState>(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<ClientState>(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));
index b07713885097520160ce2728f51cc1e4695ab409..a5c1d88735ecd0440c4970b6923c989371232f66 100644 (file)
@@ -1962,7 +1962,7 @@ static void udpClientThread(std::vector<ClientState*> 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;
index acbc45102e49787944a6c255fe9ad8d413e7c979..76c0ef8a160eb8b4decdc5851431291f78cc1e8f 100644 (file)
@@ -604,7 +604,7 @@ struct ClientState
     }
   }
 
-  void attachFilter(shared_ptr<BPFFilter> bpf, int socket)
+  void attachFilter(shared_ptr<BPFFilter>& bpf, int socket)
   {
     detachFilter(socket);
 
@@ -627,7 +627,7 @@ struct ClientState
     }
   }
 
-  void attachFilter(shared_ptr<BPFFilter> bpf)
+  void attachFilter(shared_ptr<BPFFilter>& bpf)
   {
     detachFilter();
 
index 889249d0c0fb03a0a31c76dec797336c47db99a7..bba713bb6f43170689c860cc4649c75f9837a7b7 100644 (file)
@@ -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;
   }
 
index 783b5ae21ae8455919c132014ca3e9a8b515d71f..17f2f5238e4e15698cbbeab341bb754c62f5d014 100644 (file)
@@ -290,7 +290,7 @@ void setPoolPolicy(pools_t& pools, const string& poolName, std::shared_ptr<Serve
   } else {
     vinfolog("Setting default pool server selection policy to %s", policy->getName());
   }
-  pool->policy = policy;
+  pool->policy = std::move(policy);
 }
 
 void addServerToPool(pools_t& pools, const string& poolName, std::shared_ptr<DownstreamState> server)
index 0385550e0af283dca538f93e038bedf3d26582fb..114eead045058cfd5b79493fdd0d6e5c3503a2bb 100644 (file)
@@ -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;
index 606220ef83386b70d6e74418e670713ac2cf19fc..96053144904f174048b6660fd1a6b8e16d24016d 100644 (file)
@@ -31,7 +31,7 @@ void setupLuaBindingsDNSParser(LuaContext& luaCtx)
     return dpo;
   });
 
-  luaCtx.registerMember<DNSName(dnsdist::DNSPacketOverlay::*)>(std::string("qname"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_qname; });
+  luaCtx.registerMember<DNSName(dnsdist::DNSPacketOverlay::*)>(std::string("qname"), [](const dnsdist::DNSPacketOverlay& overlay) -> const DNSName& { return overlay.d_qname; });
   luaCtx.registerMember<uint16_t(dnsdist::DNSPacketOverlay::*)>(std::string("qtype"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_qtype; });
   luaCtx.registerMember<uint16_t(dnsdist::DNSPacketOverlay::*)>(std::string("qclass"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_qclass; });
   luaCtx.registerMember<dnsheader(dnsdist::DNSPacketOverlay::*)>(std::string("dh"), [](const dnsdist::DNSPacketOverlay& overlay) { return overlay.d_header; });
index 4bf83a51bcd71bc42ee994aa59d7555bc561511e..059bce7bb0344472c4227749dcde500e1f97ec80 100644 (file)
@@ -85,15 +85,15 @@ void setupLuaBindingsRings(LuaContext& luaCtx, bool client)
     return results;
   });
 
-  luaCtx.registerMember<DNSName(LuaRingEntry::*)>(std::string("qname"), [](const LuaRingEntry& entry) {
+  luaCtx.registerMember<DNSName(LuaRingEntry::*)>(std::string("qname"), [](const LuaRingEntry& entry) -> const DNSName& {
     return entry.qname;
   });
 
-  luaCtx.registerMember<ComboAddress(LuaRingEntry::*)>(std::string("requestor"), [](const LuaRingEntry& entry) {
+  luaCtx.registerMember<ComboAddress(LuaRingEntry::*)>(std::string("requestor"), [](const LuaRingEntry& entry) -> const ComboAddress& {
     return entry.requestor;
   });
 
-  luaCtx.registerMember<ComboAddress(LuaRingEntry::*)>(std::string("backend"), [](const LuaRingEntry& entry) {
+  luaCtx.registerMember<ComboAddress(LuaRingEntry::*)>(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(LuaRingEntry::*)>(std::string("macAddress"), [](const LuaRingEntry& entry) {
+  luaCtx.registerMember<std::string(LuaRingEntry::*)>(std::string("macAddress"), [](const LuaRingEntry& entry) -> const std::string& {
     return entry.macAddr;
   });
 
index f7365bf7718b2c885072e767e93ac41091d39ea2..917348c26b60c9632d16083d342c636d6b49f7ee 100644 (file)
@@ -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) {
index 0db65fb38a7749c07f7045be78c0fa7dea1465e9..bf1666f84246652abe004b7d63db05745891dab3 100644 (file)
@@ -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<DoHConnectionToBackend>(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);
     }
   }
 }
index f6b4323e7ffc825cff601f6580b779b0eba38aab..930814854acc495b7f861004e3a7ff3a828eeaba 100644 (file)
@@ -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;
     }
index 47c6d904f2d263ca5bc17f5449dedf438ad37dcc..0ac9e33874fc579ab406fa5b5fc6071bad8dd5a8 100644 (file)
@@ -1728,7 +1728,7 @@ void H2ODOHFrontend::reloadCertificates()
 {
   auto newAcceptContext = std::make_shared<DOHAcceptContext>();
   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()
index d62ba7828b81ad0036b96d3014bbfe89cd7f78a1..a69c7c1cadd3be0c2baf34132f5b407204106427 100644 (file)
@@ -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 "<<d_fd);
       }
       else {
-        d_mplexer.addReadFD(d_fd, callback, callbackData, ttd ? &*ttd : nullptr);
+        d_mplexer.addReadFD(d_fd, std::move(callback), callbackData, ttd ? &*ttd : nullptr);
         DEBUGLOG(__PRETTY_FUNCTION__<<": add read FD "<<d_fd);
       }
 
@@ -149,11 +149,11 @@ public:
 
       if (isWaitingForRead()) {
         d_isWaitingForRead = false;
-        d_mplexer.alterFDToWrite(d_fd, callback, callbackData, ttd ? &*ttd : nullptr);
+        d_mplexer.alterFDToWrite(d_fd, std::move(callback), callbackData, ttd ? &*ttd : nullptr);
         DEBUGLOG(__PRETTY_FUNCTION__<<": alter from read to write FD "<<d_fd);
       }
       else {
-        d_mplexer.addWriteFD(d_fd, callback, callbackData, ttd ? &*ttd : nullptr);
+        d_mplexer.addWriteFD(d_fd, std::move(callback), callbackData, ttd ? &*ttd : nullptr);
         DEBUGLOG(__PRETTY_FUNCTION__<<": add write FD "<<d_fd);
       }
 
index a77d665157b1b366f6a6166d4e207c748311cd4d..7348d2df80151786461a30d182f34593bbc24277 100644 (file)
@@ -1013,7 +1013,7 @@ std::pair<std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>, std::vector<std::st
 #ifndef DISABLE_OCSP_STAPLING
   if (!config.d_ocspFiles.empty()) {
     try {
-      ocspResponses = libssl_load_ocsp_responses(config.d_ocspFiles, keyTypes, warnings);
+      ocspResponses = libssl_load_ocsp_responses(config.d_ocspFiles, std::move(keyTypes), warnings);
     }
     catch(const std::exception& e) {
       throw std::runtime_error("Unable to load OCSP responses: " + std::string(e.what()));
index 03468f8e367c450f1bd5d1727cae118e07840a42..6f6b8999846f291ba4718dba922cbaf5ef8b2ce1 100644 (file)
@@ -1854,7 +1854,7 @@ bool TLSFrontend::setupTLS()
     setupDoHProtocolNegotiation(newCtx);
   }
 
-  std::atomic_store_explicit(&d_ctx, newCtx, std::memory_order_release);
+  std::atomic_store_explicit(&d_ctx, std::move(newCtx), std::memory_order_release);
 #endif /* HAVE_DNS_OVER_TLS || HAVE_DNS_OVER_HTTPS */
   return true;
 }