summaryrefslogtreecommitdiff
path: root/vendor/github.com/miekg/dns/scan_rr.go
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2023-02-27 10:51:12 +0100
committerLibravatar GitHub <noreply@github.com>2023-02-27 10:51:12 +0100
commit8696a8cdf0ecb6ae6b324dc4b9d691aa398c06da (patch)
tree3759ea8648cdd8575b8af0259572b966cfccc638 /vendor/github.com/miekg/dns/scan_rr.go
parent[chore] Better diff for envparsing test (#1562) (diff)
downloadgotosocial-8696a8cdf0ecb6ae6b324dc4b9d691aa398c06da.tar.xz
[chore]: Bump github.com/miekg/dns from 1.1.50 to 1.1.51 (#1566)
Bumps [github.com/miekg/dns](https://github.com/miekg/dns) from 1.1.50 to 1.1.51. - [Release notes](https://github.com/miekg/dns/releases) - [Changelog](https://github.com/miekg/dns/blob/master/Makefile.release) - [Commits](https://github.com/miekg/dns/compare/v1.1.50...v1.1.51) --- updated-dependencies: - dependency-name: github.com/miekg/dns dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Diffstat (limited to 'vendor/github.com/miekg/dns/scan_rr.go')
-rw-r--r--vendor/github.com/miekg/dns/scan_rr.go112
1 files changed, 112 insertions, 0 deletions
diff --git a/vendor/github.com/miekg/dns/scan_rr.go b/vendor/github.com/miekg/dns/scan_rr.go
index e398484da..68dbff690 100644
--- a/vendor/github.com/miekg/dns/scan_rr.go
+++ b/vendor/github.com/miekg/dns/scan_rr.go
@@ -3,6 +3,7 @@ package dns
import (
"bytes"
"encoding/base64"
+ "errors"
"net"
"strconv"
"strings"
@@ -1216,6 +1217,117 @@ func (rr *DS) parse(c *zlexer, o string) *ParseError { return rr.parseDS(c,
func (rr *DLV) parse(c *zlexer, o string) *ParseError { return rr.parseDS(c, o, "DLV") }
func (rr *CDS) parse(c *zlexer, o string) *ParseError { return rr.parseDS(c, o, "CDS") }
+func (rr *IPSECKEY) parse(c *zlexer, o string) *ParseError {
+ l, _ := c.Next()
+ num, err := strconv.ParseUint(l.token, 10, 8)
+ if err != nil || l.err {
+ return &ParseError{"", "bad IPSECKEY value", l}
+ }
+ rr.Precedence = uint8(num)
+ c.Next() // zBlank
+
+ l, _ = c.Next()
+ num, err = strconv.ParseUint(l.token, 10, 8)
+ if err != nil || l.err {
+ return &ParseError{"", "bad IPSECKEY value", l}
+ }
+ rr.GatewayType = uint8(num)
+ c.Next() // zBlank
+
+ l, _ = c.Next()
+ num, err = strconv.ParseUint(l.token, 10, 8)
+ if err != nil || l.err {
+ return &ParseError{"", "bad IPSECKEY value", l}
+ }
+ rr.Algorithm = uint8(num)
+ c.Next() // zBlank
+
+ l, _ = c.Next()
+ if l.err {
+ return &ParseError{"", "bad IPSECKEY gateway", l}
+ }
+
+ rr.GatewayAddr, rr.GatewayHost, err = parseAddrHostUnion(l.token, o, rr.GatewayType)
+ if err != nil {
+ return &ParseError{"", "AMTRELAY " + err.Error(), l}
+ }
+
+ c.Next() // zBlank
+
+ s, pErr := endingToString(c, "bad IPSECKEY PublicKey")
+ if pErr != nil {
+ return pErr
+ }
+ rr.PublicKey = s
+ return slurpRemainder(c)
+}
+
+func (rr *AMTRELAY) parse(c *zlexer, o string) *ParseError {
+ l, _ := c.Next()
+ num, err := strconv.ParseUint(l.token, 10, 8)
+ if err != nil || l.err {
+ return &ParseError{"", "bad AMTRELAY value", l}
+ }
+ rr.Precedence = uint8(num)
+ c.Next() // zBlank
+
+ l, _ = c.Next()
+ if l.err || !(l.token == "0" || l.token == "1") {
+ return &ParseError{"", "bad discovery value", l}
+ }
+ if l.token == "1" {
+ rr.GatewayType = 0x80
+ }
+
+ c.Next() // zBlank
+
+ l, _ = c.Next()
+ num, err = strconv.ParseUint(l.token, 10, 8)
+ if err != nil || l.err {
+ return &ParseError{"", "bad AMTRELAY value", l}
+ }
+ rr.GatewayType |= uint8(num)
+ c.Next() // zBlank
+
+ l, _ = c.Next()
+ if l.err {
+ return &ParseError{"", "bad AMTRELAY gateway", l}
+ }
+
+ rr.GatewayAddr, rr.GatewayHost, err = parseAddrHostUnion(l.token, o, rr.GatewayType&0x7f)
+ if err != nil {
+ return &ParseError{"", "AMTRELAY " + err.Error(), l}
+ }
+
+ return slurpRemainder(c)
+}
+
+// same constants and parsing between IPSECKEY and AMTRELAY
+func parseAddrHostUnion(token, o string, gatewayType uint8) (addr net.IP, host string, err error) {
+ switch gatewayType {
+ case IPSECGatewayNone:
+ if token != "." {
+ return addr, host, errors.New("gateway type none with gateway set")
+ }
+ case IPSECGatewayIPv4, IPSECGatewayIPv6:
+ addr = net.ParseIP(token)
+ if addr == nil {
+ return addr, host, errors.New("gateway IP invalid")
+ }
+ if (addr.To4() == nil) == (gatewayType == IPSECGatewayIPv4) {
+ return addr, host, errors.New("gateway IP family mismatch")
+ }
+ case IPSECGatewayHost:
+ var ok bool
+ host, ok = toAbsoluteName(token, o)
+ if !ok {
+ return addr, host, errors.New("invalid gateway host")
+ }
+ }
+
+ return addr, host, nil
+}
+
func (rr *RKEY) parse(c *zlexer, o string) *ParseError {
l, _ := c.Next()
i, e := strconv.ParseUint(l.token, 10, 16)