internal/deephash: 8 bits of output is not enough
Running hex.Encode(b, b) is a bad idea. The first byte of input will overwrite the first two bytes of output. Subsequent bytes have no impact on the output. Not related to today's IPv6 bug, but...wh::ps. This caused us to spuriously ignore some wireguard config updates. Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:
committed by
Josh Bleecher Snyder
parent
c35a832de6
commit
7f095617f2
@@ -134,3 +134,14 @@ func BenchmarkHashMapAcyclic(b *testing.B) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestExhaustive(t *testing.T) {
|
||||
seen := make(map[string]bool)
|
||||
for i := 0; i < 100000; i++ {
|
||||
s := calcHash(i)
|
||||
if seen[s] {
|
||||
t.Fatalf("hash collision %v", i)
|
||||
}
|
||||
seen[s] = true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user