diff --git a/dns/message.go b/dns/message.go index e6c4b6b..7b039e5 100644 --- a/dns/message.go +++ b/dns/message.go @@ -381,6 +381,11 @@ func (m *Message) UnmarshalRR(start int, rr *RR) (n int, err error) { rr.CLASS = binary.BigEndian.Uint16(p[n+2:]) rr.TTL = binary.BigEndian.Uint32(p[n+4:]) rr.RDLENGTH = binary.BigEndian.Uint16(p[n+8:]) + + if len(p) <= n+10+int(rr.RDLENGTH) { + return 0, errors.New("UnmarshalRR: not enough data for RDATA") + } + rr.RDATA = p[n+10 : n+10+int(rr.RDLENGTH)] if rr.TYPE == QTypeA {