Fix handling of dnames
Add support for escaped dots. Only thing to fix is the fqdn-ness of user defined names.
This commit is contained in:
parent
0322d3a9da
commit
b417c42bc2
|
@ -198,7 +198,7 @@ func (dns *Msg) IsEdns0() (ok bool) {
|
|||
|
||||
// IsDomainName checks if s is a valid domainname, it returns
|
||||
// true and a length, when a domain name is valid. When false
|
||||
// is return the length isn't specified.
|
||||
// ithe returned length isn't specified.
|
||||
func IsDomainName(s string) (bool, int) { // copied from net package.
|
||||
// See RFC 1035, RFC 3696.
|
||||
if len(s) == 0 {
|
||||
|
@ -224,6 +224,8 @@ func IsDomainName(s string) (bool, int) { // copied from net package.
|
|||
ok = true
|
||||
partlen++
|
||||
n++
|
||||
case c == '\\':
|
||||
// Ok
|
||||
case '0' <= c && c <= '9':
|
||||
// fine
|
||||
partlen++
|
||||
|
@ -239,6 +241,11 @@ func IsDomainName(s string) (bool, int) { // copied from net package.
|
|||
if last == '.' || last == '-' {
|
||||
return false, 0
|
||||
}
|
||||
if last == '\\' { // Ok, escaped dot.
|
||||
partlen++
|
||||
n++
|
||||
break
|
||||
}
|
||||
if partlen > 63 || partlen == 0 {
|
||||
return false, 0
|
||||
}
|
||||
|
|
|
@ -130,6 +130,30 @@ z3.miek.nl. IN NSEC miek.nl. TXT RRSIG NSEC`
|
|||
}
|
||||
}
|
||||
|
||||
func TestDomainName(t *testing.T) {
|
||||
tests := []string{"r\\.gieben.miek.nl."}
|
||||
dbuff := make([]byte, 40)
|
||||
|
||||
|
||||
for _, ts := range tests {
|
||||
if _, ok := PackDomainName(ts, dbuff, 0); !ok {
|
||||
t.Log("Not a valid domain name")
|
||||
t.Fail()
|
||||
continue
|
||||
}
|
||||
n, _, ok := UnpackDomainName(dbuff, 0)
|
||||
if !ok {
|
||||
t.Log("Failed to unpack packed domain name")
|
||||
t.Fail()
|
||||
continue;
|
||||
}
|
||||
if ts != n {
|
||||
t.Logf("Must be equal: in: %s, out: %s\n", ts, n)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseBrace(t *testing.T) {
|
||||
tests := map[string]string{
|
||||
"(miek.nl.) 3600 IN A 127.0.0.1": "miek.nl.\t3600\tIN\tA\t127.0.0.1",
|
||||
|
|
Loading…
Reference in New Issue