mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2025-02-22 21:33:14 +08:00
chore: disallow space at begin or end in DomainTrie
This commit is contained in:
parent
d80e8bb0c2
commit
7dafe7889e
@ -3,6 +3,8 @@ package trie
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
"unicode"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -25,6 +27,14 @@ func ValidAndSplitDomain(domain string) ([]string, bool) {
|
||||
if domain != "" && domain[len(domain)-1] == '.' {
|
||||
return nil, false
|
||||
}
|
||||
if domain != "" {
|
||||
if r, _ := utf8.DecodeRuneInString(domain); unicode.IsSpace(r) {
|
||||
return nil, false
|
||||
}
|
||||
if r, _ := utf8.DecodeLastRuneInString(domain); unicode.IsSpace(r) {
|
||||
return nil, false
|
||||
}
|
||||
}
|
||||
domain = strings.ToLower(domain)
|
||||
parts := strings.Split(domain, domainStep)
|
||||
if len(parts) == 1 {
|
||||
|
@ -127,3 +127,14 @@ func TestTrie_Foreach(t *testing.T) {
|
||||
})
|
||||
assert.Equal(t, 7, count)
|
||||
}
|
||||
|
||||
func TestTrie_Space(t *testing.T) {
|
||||
validDomain := func(domain string) bool {
|
||||
_, ok := trie.ValidAndSplitDomain(domain)
|
||||
return ok
|
||||
}
|
||||
assert.True(t, validDomain("google.com"))
|
||||
assert.False(t, validDomain(" google.com"))
|
||||
assert.False(t, validDomain(" google.com "))
|
||||
assert.True(t, validDomain("Mijia Cloud"))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user