From 5cbcc547a4ae84b9f338620b16202b7e15349994 Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Fri, 5 Nov 2021 11:53:36 +0100 Subject: [PATCH] auth: improve SOA dnsname exception handling --- modules/tinydnsbackend/tinydnsbackend.cc | 2 +- pdns/backends/gsql/gsqlbackend.cc | 2 +- pdns/dnsbackend.cc | 2 +- pdns/pdnsutil.cc | 9 ++++++++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/tinydnsbackend/tinydnsbackend.cc b/modules/tinydnsbackend/tinydnsbackend.cc index 3936a23d9e..a1a340cbc3 100644 --- a/modules/tinydnsbackend/tinydnsbackend.cc +++ b/modules/tinydnsbackend/tinydnsbackend.cc @@ -185,7 +185,7 @@ void TinyDNSBackend::getAllDomains(vector* domains, bool include_dis fillSOAData(rr.content, sd); di.serial = sd.serial; } - catch (const PDNSException& e) { + catch (...) { di.serial = 0; } diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index 13b833ffb8..63aa8df20a 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -1449,7 +1449,7 @@ void GSQLBackend::getAllDomains(vector *domains, bool include_disabl fillSOAData(row[2], sd); di.serial = sd.serial; } - catch (const PDNSException& e) { + catch (...) { di.serial = 0; } } diff --git a/pdns/dnsbackend.cc b/pdns/dnsbackend.cc index b3253c85b7..522ad65cc8 100644 --- a/pdns/dnsbackend.cc +++ b/pdns/dnsbackend.cc @@ -263,7 +263,7 @@ bool DNSBackend::getSOA(const DNSName &domain, SOAData &sd) fillSOAData(rr.content, sd); } } - catch (const PDNSException& e) { + catch (...) { while (this->get(rr)) { ; } diff --git a/pdns/pdnsutil.cc b/pdns/pdnsutil.cc index e77d4f834d..9d1dd8a0f6 100644 --- a/pdns/pdnsutil.cc +++ b/pdns/pdnsutil.cc @@ -271,7 +271,14 @@ static int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, con } } catch (const PDNSException& e) { - cout << "[Error] SOA lookup failed: " << e.reason << endl; + cout << "[Error] SOA lookup failed for zone '" << zone << "': " << e.reason << endl; + numerrors++; + if (!sd.db) { + return 1; + } + } + catch (const std::exception& e) { + cout << "[Error] SOA lookup failed for zone '" << zone << "': " << e.what() << endl; numerrors++; if (!sd.db) { return 1; -- 2.47.2