Skip to content

Commit

Permalink
domain: Fix panic caused by possible generation of duplicate keys for…
Browse files Browse the repository at this point in the history
… `domainSuffix`
  • Loading branch information
nekohasekai committed Jul 17, 2024
1 parent d9f2559 commit 1f376ac
Showing 1 changed file with 5 additions and 14 deletions.
19 changes: 5 additions & 14 deletions common/domain/matcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@ func NewMatcher(domains []string, domainSuffix []string) *Matcher {
domainList = append(domainList, reverseDomainSuffix(domain))
} else {
domainList = append(domainList, reverseDomain(domain))
domainList = append(domainList, reverseRootDomainSuffix(domain))
suffixDomain := "." + domain
if !seen[suffixDomain] {
seen[suffixDomain] = true
domainList = append(domainList, reverseDomainSuffix(suffixDomain))
}
}
}
for _, domain := range domains {
Expand Down Expand Up @@ -139,16 +143,3 @@ func reverseDomainSuffix(domain string) string {
b[l] = prefixLabel
return string(b)
}

func reverseRootDomainSuffix(domain string) string {
l := len(domain)
b := make([]byte, l+2)
for i := 0; i < l; {
r, n := utf8.DecodeRuneInString(domain[i:])
i += n
utf8.EncodeRune(b[l-i:], r)
}
b[l] = '.'
b[l+1] = prefixLabel
return string(b)
}

0 comments on commit 1f376ac

Please sign in to comment.