From 7aa11e5d3e81003533b95fdf315531124071c66f Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Wed, 24 Aug 2011 15:39:26 +0200 Subject: [PATCH] add panics to update if q section is empty --- README.markdown | 2 +- update.go | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.markdown b/README.markdown index 4a3f1209..2a9b25a9 100644 --- a/README.markdown +++ b/README.markdown @@ -29,7 +29,7 @@ Miek Gieben - 2010, 2011 - miek@miek.nl * 1876 - LOC record (incomplete) * 1995 - IXFR * 1996 - DNS notify -* 2136 - DNS Update +* 2136 - DNS Update (dynamic updates) * 2181 - RRset definition * 2537 - RSAMD5 DNS keys * 2065 - DNSSEC (updated in later RFCs) diff --git a/update.go b/update.go index 21f6681a..535b95fc 100644 --- a/update.go +++ b/update.go @@ -65,10 +65,13 @@ func (u *Update) NameNotUsed(rr []RR) { // RRsetUsedFull sets the RRs in the prereq section to // "RRset exists (value dependent -- with rdata)" RRs. RFC 2136 section 2.4.2. func (u *Update) RRsetUsedFull(rr []RR) { + if len(u.Msg.Question) == 0 { + panic("empty question section" + } u.Answer = make([]RR, len(rr)) for i, r := range rr { u.Answer[i] = r - u.Answer[i].Header().Class = u.Msg.Question[0].Qclass // TODO crashes if question is zero + u.Answer[i].Header().Class = u.Msg.Question[0].Qclass } } @@ -107,10 +110,13 @@ func (u *Update) RRsetNotUsed(rr []RR) { // RRsetAddFull adds an complete RRset, see RFC 2136 section 2.5.1 func (u *Update) RRsetAddFull(rr []RR) { + if len(u.Msg.Question) == 0 { + panic("empty question section" + } u.Ns = make([]RR, len(rr)) for i, r := range rr { u.Ns[i] = r - u.Ns[i].Header().Class = u.Msg.Question[0].Qclass // TODO crashes if question is zero + u.Ns[i].Header().Class = u.Msg.Question[0].Qclass } }