From 5e95e60152c44794d50963cceeea057967dc27c5 Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Mon, 11 Jan 2016 12:31:57 +0100 Subject: [PATCH] Warn if SOA-EDIT value is bogus --- pdns/dnsseckeeper.hh | 2 +- pdns/serialtweaker.cc | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pdns/dnsseckeeper.hh b/pdns/dnsseckeeper.hh index d455de2062..4cdbd81b77 100644 --- a/pdns/dnsseckeeper.hh +++ b/pdns/dnsseckeeper.hh @@ -174,7 +174,7 @@ uint32_t localtime_format_YYYYMMDDSS(time_t t, uint32_t seq); // for SOA-EDIT uint32_t calculateEditSOA(SOAData sd, const string& kind); bool editSOA(DNSSECKeeper& dk, const DNSName& qname, DNSPacket* dp); -bool editSOARecord(DNSResourceRecord& rr, const string& kind); +bool editSOARecord(DNSResourceRecord& rr, const string& kind, const DNSName& qname); // for SOA-EDIT-DNSUPDATE/API uint32_t calculateIncreaseSOA(SOAData sd, const string& increaseKind, const string& editKind); bool increaseSOARecord(DNSResourceRecord& rr, const string& increaseKind, const string& editKind); diff --git a/pdns/serialtweaker.cc b/pdns/serialtweaker.cc index 2a7f4e135e..3dd474ef45 100644 --- a/pdns/serialtweaker.cc +++ b/pdns/serialtweaker.cc @@ -46,17 +46,18 @@ bool editSOA(DNSSECKeeper& dk, const DNSName& qname, DNSPacket* dp) if(rr.qtype.getCode() == QType::SOA && rr.qname == qname) { string kind; dk.getSoaEdit(qname, kind); - return editSOARecord(rr, kind); + return editSOARecord(rr, kind, qname); } } return false; } -bool editSOARecord(DNSResourceRecord& rr, const string& kind) { +bool editSOARecord(DNSResourceRecord& rr, const string& kind, const DNSName& qname) { if(kind.empty()) return false; SOAData sd; + sd.qname = qname; fillSOAData(rr.content, sd); sd.serial = calculateEditSOA(sd, kind); rr.content = serializeSOAData(sd); @@ -94,6 +95,8 @@ uint32_t calculateEditSOA(SOAData sd, const string& kind) { uint32_t inception = getStartOfWeek(); if (sd.serial < inception) return inception; + } else if(!kind.empty()) { + L<