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 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