diff --git a/msg.go b/msg.go index a3c2959b..1d2dd8f4 100644 --- a/msg.go +++ b/msg.go @@ -331,6 +331,7 @@ func UnpackDomainName(msg []byte, off int) (s string, off1 int, err error) { s = "" lenmsg := len(msg) ptr := 0 // number of pointers followed + offstart := off Loop: for { if off >= lenmsg { @@ -391,6 +392,9 @@ Loop: if ptr == 0 { off1 = off } + if off1 - offstart > 255 { + return "", lenmsg, ErrDomain + } return s, off1, nil }