From eb4745b6952748a0524842bf9c4e944f076e725a Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Fri, 27 May 2022 11:01:25 +0200 Subject: [PATCH] Add more detail to NSEC packing errors (#1374) Add 'in the type bitmap' to make clear where in the RR the error occurs. Also use 'NSEC(3)' - as this code is shared between NSEC and NSEC3, the first error used NSECx. Technically backwards incompatible, but checking strings in errors as bad practice (although this lib lacks library types). See #1373 Signed-off-by: Miek Gieben --- msg_helpers.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/msg_helpers.go b/msg_helpers.go index b049028b..ea2035cd 100644 --- a/msg_helpers.go +++ b/msg_helpers.go @@ -476,7 +476,7 @@ func unpackDataNsec(msg []byte, off int) ([]uint16, int, error) { length, window, lastwindow := 0, 0, -1 for off < len(msg) { if off+2 > len(msg) { - return nsec, len(msg), &Error{err: "overflow unpacking nsecx"} + return nsec, len(msg), &Error{err: "overflow unpacking NSEC(3)"} } window = int(msg[off]) length = int(msg[off+1]) @@ -484,17 +484,17 @@ func unpackDataNsec(msg []byte, off int) ([]uint16, int, error) { if window <= lastwindow { // RFC 4034: Blocks are present in the NSEC RR RDATA in // increasing numerical order. - return nsec, len(msg), &Error{err: "out of order NSEC block"} + return nsec, len(msg), &Error{err: "out of order NSEC(3) block in type bitmap"} } if length == 0 { // RFC 4034: Blocks with no types present MUST NOT be included. - return nsec, len(msg), &Error{err: "empty NSEC block"} + return nsec, len(msg), &Error{err: "empty NSEC(3) block in type bitmap"} } if length > 32 { - return nsec, len(msg), &Error{err: "NSEC block too long"} + return nsec, len(msg), &Error{err: "NSEC(3) block too long in type bitmap"} } if off+length > len(msg) { - return nsec, len(msg), &Error{err: "overflowing NSEC block"} + return nsec, len(msg), &Error{err: "overflowing NSEC(3) block in type bitmap"} } // Walk the bytes in the window and extract the type bits