aboutsummaryrefslogtreecommitdiff
path: root/src/net/lookup.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2016-01-06 20:50:11 -0500
committerRuss Cox <rsc@golang.org>2016-01-08 16:19:20 +0000
commitbb8c2e19a7fe2ca2283eca44dba2047c9f4307fe (patch)
tree1126536a5b6aa5d308487c6b84c25bc4193af240 /src/net/lookup.go
parentd75acd67eccbfe6f03b6474baea3b569cd0135d6 (diff)
downloadgo-bb8c2e19a7fe2ca2283eca44dba2047c9f4307fe.tar.gz
go-bb8c2e19a7fe2ca2283eca44dba2047c9f4307fe.zip
net: ensure that malformed domain names report a consistent error
Previously it depended on whether we were using the Go resolver or the Cgo resolver. Fixes #12421. Change-Id: Ib162e336f30f736d7244e29d96651c3be11fc3cd Reviewed-on: https://go-review.googlesource.com/18383 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/net/lookup.go')
-rw-r--r--src/net/lookup.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/net/lookup.go b/src/net/lookup.go
index 7aa111ba92..b5d77e02ea 100644
--- a/src/net/lookup.go
+++ b/src/net/lookup.go
@@ -33,6 +33,9 @@ func LookupHost(host string) (addrs []string, err error) {
if ip := ParseIP(host); ip != nil {
return []string{host}, nil
}
+ if !isDomainName(host) {
+ return nil, &DNSError{Err: "invalid domain name", Name: host}
+ }
return lookupHost(host)
}
@@ -47,6 +50,9 @@ func LookupIP(host string) (ips []IP, err error) {
if ip := ParseIP(host); ip != nil {
return []IP{ip}, nil
}
+ if !isDomainName(host) {
+ return nil, &DNSError{Err: "invalid domain name", Name: host}
+ }
addrs, err := lookupIPMerge(host)
if err != nil {
return
@@ -146,6 +152,9 @@ func LookupPort(network, service string) (port int, err error) {
// LookupHost or LookupIP directly; both take care of resolving
// the canonical name as part of the lookup.
func LookupCNAME(name string) (cname string, err error) {
+ if !isDomainName(name) {
+ return "", &DNSError{Err: "invalid domain name", Name: name}
+ }
return lookupCNAME(name)
}
@@ -159,21 +168,33 @@ func LookupCNAME(name string) (cname string, err error) {
// publishing SRV records under non-standard names, if both service
// and proto are empty strings, LookupSRV looks up name directly.
func LookupSRV(service, proto, name string) (cname string, addrs []*SRV, err error) {
+ if !isDomainName(name) {
+ return "", nil, &DNSError{Err: "invalid domain name", Name: name}
+ }
return lookupSRV(service, proto, name)
}
// LookupMX returns the DNS MX records for the given domain name sorted by preference.
func LookupMX(name string) (mxs []*MX, err error) {
+ if !isDomainName(name) {
+ return nil, &DNSError{Err: "invalid domain name", Name: name}
+ }
return lookupMX(name)
}
// LookupNS returns the DNS NS records for the given domain name.
func LookupNS(name string) (nss []*NS, err error) {
+ if !isDomainName(name) {
+ return nil, &DNSError{Err: "invalid domain name", Name: name}
+ }
return lookupNS(name)
}
// LookupTXT returns the DNS TXT records for the given domain name.
func LookupTXT(name string) (txts []string, err error) {
+ if !isDomainName(name) {
+ return nil, &DNSError{Err: "invalid domain name", Name: name}
+ }
return lookupTXT(name)
}