From 5b86e1fd3402fdeef921ff64fb4188d22f8312ee Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Fri, 5 Nov 2021 11:24:53 +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 9292d3803c..ae35c0feaa 100644 --- a/modules/tinydnsbackend/tinydnsbackend.cc +++ b/modules/tinydnsbackend/tinydnsbackend.cc @@ -184,7 +184,7 @@ void TinyDNSBackend::getAllDomains(vector* domains, bool getSerial, 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 83ac518f89..be0c594155 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -1449,7 +1449,7 @@ void GSQLBackend::getAllDomains(vector* domains, bool getSerial, boo 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 719b051e06..991ab6f3d1 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 8da10873ca..5007f1763b 100644 --- a/pdns/pdnsutil.cc +++ b/pdns/pdnsutil.cc @@ -272,7 +272,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