mirror of
https://github.com/golang/go
synced 2024-11-18 09:04:49 -07:00
crypto/x509: allow wildcards only as the first label.
RFC 6125 now specifies that wildcards are only allowed for the leftmost label in a pattern: https://tools.ietf.org/html/rfc6125#section-6.4.3. This change updates Go to match the behaviour of major browsers in this respect. Fixes #9834. Change-Id: I37c10a35177133624568f2e0cf2767533926b04a Reviewed-on: https://go-review.googlesource.com/5691 Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
8f8d066bfd
commit
e7fae68540
@ -337,7 +337,7 @@ func matchHostnames(pattern, host string) bool {
|
||||
}
|
||||
|
||||
for i, patternPart := range patternParts {
|
||||
if patternPart == "*" {
|
||||
if i == 0 && patternPart == "*" {
|
||||
continue
|
||||
}
|
||||
if patternPart != hostParts[i] {
|
||||
|
@ -163,11 +163,14 @@ var matchHostnamesTests = []matchHostnamesTest{
|
||||
{"example.com", "example.com", true},
|
||||
{"example.com", "example.com.", true},
|
||||
{"example.com", "www.example.com", false},
|
||||
{"*.example.com", "example.com", false},
|
||||
{"*.example.com", "www.example.com", true},
|
||||
{"*.example.com", "www.example.com.", true},
|
||||
{"*.example.com", "xyz.www.example.com", false},
|
||||
{"*.*.example.com", "xyz.www.example.com", true},
|
||||
{"*.www.*.com", "xyz.www.example.com", true},
|
||||
{"*.*.example.com", "xyz.www.example.com", false},
|
||||
{"*.www.*.com", "xyz.www.example.com", false},
|
||||
{"*bar.example.com", "foobar.example.com", false},
|
||||
{"f*.example.com", "foobar.example.com", false},
|
||||
{"", ".", false},
|
||||
{".", "", false},
|
||||
{".", ".", false},
|
||||
@ -177,7 +180,7 @@ func TestMatchHostnames(t *testing.T) {
|
||||
for i, test := range matchHostnamesTests {
|
||||
r := matchHostnames(test.pattern, test.host)
|
||||
if r != test.ok {
|
||||
t.Errorf("#%d mismatch got: %t want: %t", i, r, test.ok)
|
||||
t.Errorf("#%d mismatch got: %t want: %t when matching '%s' against '%s'", i, r, test.ok, test.host, test.pattern)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user