diff options
Diffstat (limited to 'vendor/github.com/miekg/dns/msg.go')
| -rw-r--r-- | vendor/github.com/miekg/dns/msg.go | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/vendor/github.com/miekg/dns/msg.go b/vendor/github.com/miekg/dns/msg.go index 5fa7f9e..edf1859 100644 --- a/vendor/github.com/miekg/dns/msg.go +++ b/vendor/github.com/miekg/dns/msg.go @@ -136,18 +136,19 @@ var OpcodeToString = map[int]string{ // RcodeToString maps Rcodes to strings. var RcodeToString = map[int]string{ - RcodeSuccess: "NOERROR", - RcodeFormatError: "FORMERR", - RcodeServerFailure: "SERVFAIL", - RcodeNameError: "NXDOMAIN", - RcodeNotImplemented: "NOTIMP", - RcodeRefused: "REFUSED", - RcodeYXDomain: "YXDOMAIN", // See RFC 2136 - RcodeYXRrset: "YXRRSET", - RcodeNXRrset: "NXRRSET", - RcodeNotAuth: "NOTAUTH", - RcodeNotZone: "NOTZONE", - RcodeBadSig: "BADSIG", // Also known as RcodeBadVers, see RFC 6891 + RcodeSuccess: "NOERROR", + RcodeFormatError: "FORMERR", + RcodeServerFailure: "SERVFAIL", + RcodeNameError: "NXDOMAIN", + RcodeNotImplemented: "NOTIMP", + RcodeRefused: "REFUSED", + RcodeYXDomain: "YXDOMAIN", // See RFC 2136 + RcodeYXRrset: "YXRRSET", + RcodeNXRrset: "NXRRSET", + RcodeNotAuth: "NOTAUTH", + RcodeNotZone: "NOTZONE", + RcodeStatefulTypeNotImplemented: "DSOTYPENI", + RcodeBadSig: "BADSIG", // Also known as RcodeBadVers, see RFC 6891 // RcodeBadVers: "BADVERS", RcodeBadKey: "BADKEY", RcodeBadTime: "BADTIME", @@ -871,10 +872,9 @@ func (dns *Msg) unpack(dh Header, msg []byte, off int) (err error) { // TODO(miek) make this an error? // use PackOpt to let people tell how detailed the error reporting should be? // if off != len(msg) { - // // println("dns: extra bytes in dns packet", off, "<", len(msg)) + // // println("dns: extra bytes in dns packet", off, "<", len(msg)) // } return err - } // Unpack unpacks a binary message to a Msg structure. @@ -1123,23 +1123,28 @@ func unpackQuestion(msg []byte, off int) (Question, int, error) { ) q.Name, off, err = UnpackDomainName(msg, off) if err != nil { - return q, off, err + return q, off, fmt.Errorf("bad question name: %w", err) } if off == len(msg) { return q, off, nil } q.Qtype, off, err = unpackUint16(msg, off) if err != nil { - return q, off, err + return q, off, fmt.Errorf("bad question qtype: %w", err) } if off == len(msg) { return q, off, nil } q.Qclass, off, err = unpackUint16(msg, off) + if err != nil { + return q, off, fmt.Errorf("bad question qclass: %w", err) + } + if off == len(msg) { return q, off, nil } - return q, off, err + + return q, off, nil } func (dh *Header) pack(msg []byte, off int, compression compressionMap, compress bool) (int, error) { @@ -1177,27 +1182,27 @@ func unpackMsgHdr(msg []byte, off int) (Header, int, error) { ) dh.Id, off, err = unpackUint16(msg, off) if err != nil { - return dh, off, err + return dh, off, fmt.Errorf("bad header id: %w", err) } dh.Bits, off, err = unpackUint16(msg, off) if err != nil { - return dh, off, err + return dh, off, fmt.Errorf("bad header bits: %w", err) } dh.Qdcount, off, err = unpackUint16(msg, off) if err != nil { - return dh, off, err + return dh, off, fmt.Errorf("bad header question count: %w", err) } dh.Ancount, off, err = unpackUint16(msg, off) if err != nil { - return dh, off, err + return dh, off, fmt.Errorf("bad header answer count: %w", err) } dh.Nscount, off, err = unpackUint16(msg, off) if err != nil { - return dh, off, err + return dh, off, fmt.Errorf("bad header ns count: %w", err) } dh.Arcount, off, err = unpackUint16(msg, off) if err != nil { - return dh, off, err + return dh, off, fmt.Errorf("bad header extra count: %w", err) } return dh, off, nil } |
