From: Remi Gacogne Date: Tue, 28 May 2024 08:31:02 +0000 (+0200) Subject: dnsdist: Hopefully appease the static analyzer gods X-Git-Tag: rec-5.2.0-alpha0~38^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F14255%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Hopefully appease the static analyzer gods --- diff --git a/pdns/dnsdistdist/dnsdist-lua-ffi.cc b/pdns/dnsdistdist/dnsdist-lua-ffi.cc index 48d6bb5a5c..e399c438c5 100644 --- a/pdns/dnsdistdist/dnsdist-lua-ffi.cc +++ b/pdns/dnsdistdist/dnsdist-lua-ffi.cc @@ -1092,11 +1092,11 @@ bool dnsdist_ffi_dnsquestion_add_proxy_protocol_values(dnsdist_ffi_dnsquestion_t if (!dnsQuestion->dq->proxyProtocolValues) { dnsQuestion->dq->proxyProtocolValues = make_unique>(); } - if (valuesCount > 0) { - dnsQuestion->dq->proxyProtocolValues->reserve(dnsQuestion->dq->proxyProtocolValues->size() + valuesCount); - for (size_t idx = 0; idx < valuesCount; idx++) { - dnsQuestion->dq->proxyProtocolValues->push_back({ std::string(values[idx].value, values[idx].size), values[idx].type }); - } + + dnsQuestion->dq->proxyProtocolValues->reserve(dnsQuestion->dq->proxyProtocolValues->size() + valuesCount); + for (size_t idx = 0; idx < valuesCount; idx++) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic): the Lua FFI API is a C API.. + dnsQuestion->dq->proxyProtocolValues->push_back({ std::string(values[idx].value, values[idx].size), values[idx].type }); } return true; diff --git a/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc b/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc index c58a205bfb..d0cd68ea55 100644 --- a/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc +++ b/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc @@ -590,8 +590,8 @@ BOOST_AUTO_TEST_CASE(test_ProxyProtocolQuery) pwQ.getHeader()->rd = 1; pwQ.getHeader()->id = htons(42); - DNSQuestion dq(ids, query); - dnsdist_ffi_dnsquestion_t lightDQ(&dq); + DNSQuestion dnsQuestion(ids, query); + dnsdist_ffi_dnsquestion_t lightDQ(&dnsQuestion); std::vector values; values.push_back({"test-value", 10U, 1U}); @@ -614,11 +614,11 @@ BOOST_AUTO_TEST_CASE(test_ProxyProtocolQuery) { auto added = dnsdist_ffi_dnsquestion_add_proxy_protocol_values(&lightDQ, values.size(), values.data()); BOOST_CHECK_EQUAL(added, true); - BOOST_REQUIRE(dq.proxyProtocolValues != nullptr); - BOOST_REQUIRE_EQUAL(dq.proxyProtocolValues->size(), values.size()); - BOOST_CHECK_EQUAL(dq.proxyProtocolValues->at(0).type, values.at(0).type); - BOOST_REQUIRE_EQUAL(dq.proxyProtocolValues->at(0).content.size(), values.at(0).size); - BOOST_CHECK_EQUAL(memcmp(dq.proxyProtocolValues->at(0).content.data(), values.at(0).value, values.at(0).size), 0); + BOOST_REQUIRE(dnsQuestion.proxyProtocolValues != nullptr); + BOOST_REQUIRE_EQUAL(dnsQuestion.proxyProtocolValues->size(), values.size()); + BOOST_CHECK_EQUAL(dnsQuestion.proxyProtocolValues->at(0).type, values.at(0).type); + BOOST_REQUIRE_EQUAL(dnsQuestion.proxyProtocolValues->at(0).content.size(), values.at(0).size); + BOOST_CHECK_EQUAL(memcmp(dnsQuestion.proxyProtocolValues->at(0).content.data(), values.at(0).value, values.at(0).size), 0); } }