]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth, check return value of getCatalogMembers() 15094/head
authorKees Monshouwer <mind04@monshouwer.org>
Tue, 28 Jan 2025 17:33:20 +0000 (18:33 +0100)
committermind04 <mind04@monshouwer.org>
Tue, 28 Jan 2025 20:03:03 +0000 (21:03 +0100)
pdns/tcpreceiver.cc

index b84a6b9b4b4f2e8b08af67c74439dec30dc75d35..c53b6908562b0d70b9cdcd026d7fa5972bb69550 100644 (file)
@@ -793,7 +793,12 @@ int TCPNameserver::doAXFR(const DNSName &target, std::unique_ptr<DNSPacket>& q,
     zrrs.emplace_back(CatalogInfo::getCatalogVersionRecord(target));
 
     vector<CatalogInfo> 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);
     }