From 5318627227f90294ff24ef92ba87c77bd113de3f Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 25 Feb 2021 14:11:05 +1100 Subject: [PATCH] Unload a zone if a transfer breaks its SOA record If a zone transfer results in a zone not having any NS records, named stops serving it because such a zone is broken. Do the same if an incoming zone transfer results in a zone lacking an SOA record at the apex or containing more than one SOA record. --- lib/dns/zone.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 24d5849f61..00e6dd2f4e 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -17156,9 +17156,16 @@ again: if (soacount != 1) { dns_zone_log(zone, ISC_LOG_ERROR, "transferred zone " - "has %d SOA record%s", - soacount, - (soacount != 0) ? "s" : ""); + "has %d SOA records", + soacount); + if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_HAVETIMERS)) + { + zone->refresh = DNS_ZONE_DEFAULTREFRESH; + zone->retry = DNS_ZONE_DEFAULTRETRY; + } + DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_HAVETIMERS); + zone_unload(zone); + goto next_master; } if (nscount == 0) { dns_zone_log(zone, ISC_LOG_ERROR,