From: Remi Gacogne Date: Tue, 20 May 2025 08:08:49 +0000 (+0200) Subject: dnsdist: Fix Coverity's false positives X-Git-Tag: dnsdist-2.0.0-alpha2~6^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a6754390cd249d456dcae1a38169bbf844b405a;p=thirdparty%2Fpdns.git dnsdist: Fix Coverity's false positives --- diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc index 4136d9c2d3..049b88a5c1 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc @@ -168,7 +168,8 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return {}; }); - luaCtx.registerFunction("getProtocol", [](const DNSQuestion& dnsQuestion) { + luaCtx.registerFunction("getProtocol", [](const DNSQuestion& dnsQuestion) -> std::string { + // coverity[auto_causes_copy] return dnsQuestion.getProtocol().toPrettyString(); }); @@ -208,7 +209,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) } return tagIt->second; }); - luaCtx.registerFunction("getTagArray", [](const DNSQuestion& dnsQuestion) { + luaCtx.registerFunction("getTagArray", [](const DNSQuestion& dnsQuestion) -> QTag { if (!dnsQuestion.ids.qTag) { QTag empty; return empty; @@ -581,7 +582,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return std::string(); }); - luaCtx.registerFunction (DNSQuestion::*)(void) const>("getHTTPHeaders", [](const DNSQuestion& dnsQuestion) { + luaCtx.registerFunction (DNSQuestion::*)(void) const>("getHTTPHeaders", [](const DNSQuestion& dnsQuestion) -> LuaAssociativeTable { #if defined(HAVE_DNS_OVER_HTTPS) if (dnsQuestion.ids.du) { // coverity[auto_causes_copy] diff --git a/pdns/dnsdistdist/dnsdist-metrics.cc b/pdns/dnsdistdist/dnsdist-metrics.cc index 4ec0fed496..cbb237ed0b 100644 --- a/pdns/dnsdistdist/dnsdist-metrics.cc +++ b/pdns/dnsdistdist/dnsdist-metrics.cc @@ -269,6 +269,8 @@ static std::variant updateMetric(const std::string_view& /* OK, so we the metric exists (otherwise we would have returned an Error) but the label doesn't yet */ { + // too bad Coverity claims to understand C++ yet does not understand RAII + // coverity[double_lock] auto writeLockedMap = metricMap.write_lock(); auto labelsMapIt = writeLockedMap->find(name); if (labelsMapIt == writeLockedMap->end()) { diff --git a/pdns/dnsdistdist/dnsdist.hh b/pdns/dnsdistdist/dnsdist.hh index b2826ccf9d..6624e86a45 100644 --- a/pdns/dnsdistdist/dnsdist.hh +++ b/pdns/dnsdistdist/dnsdist.hh @@ -967,6 +967,7 @@ struct ServerPool void removeServer(shared_ptr& server); bool isTCPOnly() const { + // coverity[missing_lock] return d_tcpOnly; }