make sure invalid hosts aren't compared
Comparing 2 invalid hosts would erroneously return equal, because they would compare the invalid host string.
This commit is contained in:
parent
8091bd627d
commit
9034fdb050
|
@ -126,5 +126,15 @@ func (h *FriendlyHost) Equal(other *FriendlyHost) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
return h.Normalized() == other.Normalized()
|
||||
otherHost, err := svchost.ForComparison(other.Raw)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
host, err := svchost.ForComparison(h.Raw)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return otherHost == host
|
||||
}
|
||||
|
|
|
@ -116,3 +116,26 @@ func TestFriendlyHost(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalidHostEquals(t *testing.T) {
|
||||
invalid := NewFriendlyHost("NOT_A_HOST_NAME")
|
||||
valid := PublicRegistryHost
|
||||
|
||||
// invalid hosts are not comparable
|
||||
if invalid.Equal(invalid) {
|
||||
t.Fatal("invalid host names are not comparable")
|
||||
}
|
||||
|
||||
if valid.Equal(invalid) {
|
||||
t.Fatalf("%q is not equal to %q", valid, invalid)
|
||||
}
|
||||
|
||||
puny := NewFriendlyHost("xn--s-fka0wmm0zea7g8b.xn--o-8ta85a3b1dwcda1k.io")
|
||||
display := NewFriendlyHost("ʎɹʇsıƃǝɹ.ɯɹoɟɐɹɹǝʇ.io")
|
||||
|
||||
// The pre-normalized host is not a valid source, and therefore not
|
||||
// comparable to the display version.
|
||||
if display.Equal(puny) {
|
||||
t.Fatalf("invalid host %q should not be comparable", puny)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue