mirror of
https://github.com/miekg/dns.git
synced 2025-08-14 05:26:57 +02:00
Allow quotes backslashes in names
This commit is contained in:
parent
99d2040a29
commit
a61018d628
@ -1,6 +1,7 @@
|
|||||||
package dns
|
package dns
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,3 +29,19 @@ func TestCompareLabels(t *testing.T) {
|
|||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSplitLabels(t *testing.T) {
|
||||||
|
s1 := "www.miek.nl."
|
||||||
|
s2 := "www.miek.nl"
|
||||||
|
s3 := `www\.miek.nl.`
|
||||||
|
s4 := `www\\.miek.nl.`
|
||||||
|
|
||||||
|
println(len(SplitLabels(s1)))
|
||||||
|
fmt.Printf("%v\n", SplitLabels(s1))
|
||||||
|
println(len(SplitLabels(s2)))
|
||||||
|
fmt.Printf("%v\n", SplitLabels(s2))
|
||||||
|
println(len(SplitLabels(s3)))
|
||||||
|
fmt.Printf("%v\n", SplitLabels(s3))
|
||||||
|
println(len(SplitLabels(s4)))
|
||||||
|
fmt.Printf("%v\n", SplitLabels(s4))
|
||||||
|
}
|
||||||
|
19
labels.go
19
labels.go
@ -4,25 +4,24 @@ package dns
|
|||||||
|
|
||||||
// SplitLabels splits a domainname string into its labels.
|
// SplitLabels splits a domainname string into its labels.
|
||||||
func SplitLabels(s string) []string {
|
func SplitLabels(s string) []string {
|
||||||
last := byte('.')
|
|
||||||
k := 0
|
k := 0
|
||||||
labels := make([]string, 0)
|
labels := make([]string, 0)
|
||||||
escape := false
|
last := byte('.')
|
||||||
|
lastlast := byte('.')
|
||||||
s = Fqdn(s) // Make fully qualified
|
s = Fqdn(s) // Make fully qualified
|
||||||
for i := 0; i < len(s); i++ {
|
for i := 0; i < len(s); i++ {
|
||||||
escape = false
|
|
||||||
if s[i] == '\\' {
|
|
||||||
escape = true
|
|
||||||
}
|
|
||||||
if s[i] == '.' {
|
if s[i] == '.' {
|
||||||
if last == '\\' && !escape {
|
if last == '\\' {
|
||||||
// do nothing
|
if lastlast != '\\' {
|
||||||
break
|
// do nothing
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
labels = append(labels, s[k:i])
|
labels = append(labels, s[k:i])
|
||||||
k = i + 1 // + dot
|
k = i + 1 // + dot
|
||||||
}
|
}
|
||||||
last = s[i]
|
lastlast = last
|
||||||
|
last = s[i]
|
||||||
}
|
}
|
||||||
return labels
|
return labels
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user