Fix: reject malformed domain rules (#3917)

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Loyalsoldier <[email protected]>
This commit is contained in:
CopilotandLoyalsoldier authored and GitHub committed 2026-08-05 22:06:16 +08:00
1 parent 21f09bcdba
commit e449533a4a
3 files changed
+35 -3

No files matched your search

+9
View File
@@ -22,10 +22,19 @@ func TestParseEntry(t *testing.T) {
{name: "duplicated attrs", typ: "domain", rule: "example.com @ads @ads", wantPlain: "domain:example.com:@ads"},
{name: "affiliations", typ: "domain", rule: "example.com &other @ads", wantPlain: "domain:example.com:@ads", wantAffs: []string{"OTHER"}},
{name: "regexp", typ: "regexp", rule: `^example\.com$`, wantPlain: `regexp:^example\.com$`},
{name: "tld", typ: "domain", rule: "google", wantPlain: "domain:google"},
{name: "hyphen inside", typ: "domain", rule: "my-example.com", wantPlain: "domain:my-example.com"},
{name: "keyword allows partial", typ: "keyword", rule: "-ads-", wantPlain: "keyword:-ads-"},
{name: "invalid regexp", typ: "regexp", rule: "^example(", wantErr: true},
{name: "empty rule", typ: "domain", rule: " ", wantErr: true},
{name: "unknown type", typ: "prefix", rule: "example.com", wantErr: true},
{name: "invalid domain", typ: "domain", rule: "exa_mple.com @ads", wantErr: true},
{name: "empty label", typ: "domain", rule: "example..com", wantErr: true},
{name: "trailing dot", typ: "full", rule: "example.com.", wantErr: true},
{name: "leading dot", typ: "domain", rule: ".example.com", wantErr: true},
{name: "leading hyphen", typ: "domain", rule: "-example.com", wantErr: true},
{name: "trailing hyphen", typ: "full", rule: "example-.com", wantErr: true},
{name: "overlong label", typ: "domain", rule: strings.Repeat("a", 64) + ".com", wantErr: true},
{name: "empty attr", typ: "domain", rule: "example.com @", wantErr: true},
{name: "empty affiliation", typ: "domain", rule: "example.com &", wantErr: true},
{name: "unknown field", typ: "domain", rule: "example.com ads", wantErr: true},