From 4a6754390cd249d456dcae1a38169bbf844b405a Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Tue, 20 May 2025 10:08:49 +0200 Subject: [PATCH] dnsdist: Fix Coverity's false positives --- pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc | 7 ++++--- pdns/dnsdistdist/dnsdist-metrics.cc | 2 ++ pdns/dnsdistdist/dnsdist.hh | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) 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; } -- 2.47.3