Open
Description
isDomainName
is limited to hostname-compatible "preferred name" LDH labels, with an exception made for underscores per #1167. But RFC 2181 is clear about any octet being valid in a DNS label:
Those [length] restrictions aside, any binary string whatever can be used as the label of any resource record.
What version of Go are you using (go version
)?
go1.7.1
What operating system and processor architecture are you using (go env
)?
linux/amd64
GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build693750050=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
What did you do?
query uncommon domain names
package main
import (
"fmt"
"net"
)
func main() {
domains := []string{
`*.golang.org`,
`\.\.\..golang.org`,
`\065.golang.org`,
`\000.golang.org`,
}
for _, domain := range domains {
fmt.Printf("\n%s\n", domain)
fmt.Println(net.LookupHost(domain))
}
}
What did you expect to see?
successful DNS queries
*.golang.org
[216.58.219.209 2607:f8b0:4006:80e::2011] <nil>
\.\.\..golang.org
[216.58.219.209 2607:f8b0:4006:80e::2011] <nil>
\065.golang.org
[216.58.219.209 2607:f8b0:4006:80e::2011] <nil>
\000.golang.org
[216.58.219.209 2607:f8b0:4006:80e::2011] <nil>
What did you see instead?
valid names were rejected
*.golang.org
[] lookup *.golang.org: invalid domain name
\.\.\..golang.org
[] lookup \.\.\..golang.org: no such host
\065.golang.org
[216.58.219.209 2607:f8b0:4006:80e::2011] <nil>
\000.golang.org
[] lookup \000.golang.org: no such host