From: Kees Monshouwer Date: Tue, 28 Jan 2025 17:33:20 +0000 (+0100) Subject: auth, check return value of getCatalogMembers() X-Git-Tag: auth-4.8.5^2 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F15095%2Fhead;p=thirdparty%2Fpdns.git auth, check return value of getCatalogMembers() --- diff --git a/pdns/tcpreceiver.cc b/pdns/tcpreceiver.cc index 12db956bb7..31aaa42ca8 100644 --- a/pdns/tcpreceiver.cc +++ b/pdns/tcpreceiver.cc @@ -582,6 +582,7 @@ namespace { /** do the actual zone transfer. Return 0 in case of error, 1 in case of success */ +// NOLINTNEXTLINE(readability-function-cognitive-complexity) int TCPNameserver::doAXFR(const DNSName &target, std::unique_ptr& q, int outsock) { string logPrefix="AXFR-out zone '"+target.toLogString()+"', client '"+q->getRemoteString()+"', "; @@ -789,7 +790,12 @@ int TCPNameserver::doAXFR(const DNSName &target, std::unique_ptr& q, zrrs.emplace_back(CatalogInfo::getCatalogVersionRecord(target)); vector members; - sd.db->getCatalogMembers(target, members, CatalogInfo::CatalogType::Producer); + if (!sd.db->getCatalogMembers(target, members, CatalogInfo::CatalogType::Producer)) { + g_log << Logger::Error << logPrefix << "getting catalog members failed, aborting AXFR" << endl; + outpacket->setRcode(RCode::ServFail); + sendPacket(outpacket, outsock); + return 0; + } for (const auto& ci : members) { ci.toDNSZoneRecords(target, zrrs); }