From 99f84ae56e75126dd77e5de4fae2ea034a468ca1 Mon Sep 17 00:00:00 2001 From: Matthijs Mekking Date: Mon, 30 Jan 2017 11:53:01 +0100 Subject: [PATCH] return errTruncated after setting header bits (#442) --- msg.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/msg.go b/msg.go index d99c2ddf..0d8cc6fb 100644 --- a/msg.go +++ b/msg.go @@ -759,9 +759,6 @@ func (dns *Msg) Unpack(msg []byte) (err error) { if dh, off, err = unpackMsgHdr(msg, off); err != nil { return err } - if off == len(msg) { - return ErrTruncated - } dns.Id = dh.Id dns.Response = (dh.Bits & _QR) != 0 @@ -775,6 +772,10 @@ func (dns *Msg) Unpack(msg []byte) (err error) { dns.CheckingDisabled = (dh.Bits & _CD) != 0 dns.Rcode = int(dh.Bits & 0xF) + if off == len(msg) { + return ErrTruncated + } + // Optimistically use the count given to us in the header dns.Question = make([]Question, 0, int(dh.Qdcount))