Skip to content

Commit 754893d

Browse files
authored
Merge pull request #2715 from kanywst/fix/name-policy-empty-domain-panic
Fix name policy panic on empty or short domain
2 parents 922bb24 + 95a4f61 commit 754893d

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

policy/engine_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@ func TestNamePolicyEngine_matchDomainConstraint(t *testing.T) {
5454
want: false,
5555
wantErr: false,
5656
},
57+
{
58+
name: "fail/empty-domain",
59+
domain: "",
60+
constraint: "host.example.com",
61+
want: false,
62+
wantErr: false,
63+
},
64+
{
65+
name: "fail/single-asterisk-domain",
66+
domain: "*",
67+
constraint: "host.example.com",
68+
want: false,
69+
wantErr: false,
70+
},
5771
{
5872
name: "fail/period-domain",
5973
domain: ".host.example.com",

policy/validate.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,13 +480,18 @@ func (e *NamePolicyEngine) matchDomainConstraint(domain, constraint string) (boo
480480
return false, nil
481481
}
482482

483+
// An empty domain never matches a constraint.
484+
if domain == "" {
485+
return false, nil
486+
}
487+
483488
// Block domains that start with just a period
484489
if domain[0] == '.' {
485490
return false, nil
486491
}
487492

488493
// Block wildcard domains that don't start with exactly "*." (i.e. double wildcards and such)
489-
if domain[0] == '*' && domain[1] != '.' {
494+
if domain[0] == '*' && (len(domain) < 2 || domain[1] != '.') {
490495
return false, nil
491496
}
492497

0 commit comments

Comments
 (0)