diff options
| author | Benjamin Barenblat <bbaren@google.com> | 2020-09-03 16:36:38 -0400 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2020-09-03 22:08:58 +0000 |
| commit | 93810ac1f4574e1e2a79ea156781bafaf8b8ebe0 (patch) | |
| tree | f80cf558128d8b494309675a2107cd72da1c5c06 /src/testing/testing_test.go | |
| parent | 612b1194475a23760ec502b48a93fea7237f3ae6 (diff) | |
| download | go-93810ac1f4574e1e2a79ea156781bafaf8b8ebe0.tar.xz | |
runtime: opportunistically rotate map key seed
When clearing a map, reinitialize the hash seed with random data. This
makes it more difficult for attackers to trigger pathological
performance via repeated hash collisions.
The extra reinitialization causes no statistically significant slowdown:
name old time/op new time/op delta
GoMapClear/Reflexive/1-12 18.3ns ± 0% 20.0ns ± 0% ~ (p=1.000 n=1+1)
GoMapClear/Reflexive/10-12 18.2ns ± 0% 19.8ns ± 0% ~ (p=1.000 n=1+1)
GoMapClear/Reflexive/100-12 44.6ns ± 0% 46.1ns ± 0% ~ (p=1.000 n=1+1)
GoMapClear/Reflexive/1000-12 592ns ± 0% 592ns ± 0% ~ (all samples are equal)
GoMapClear/Reflexive/10000-12 3.88µs ± 0% 3.88µs ± 0% ~ (p=1.000 n=1+1)
GoMapClear/NonReflexive/1-12 62.7ns ± 0% 63.9ns ± 0% ~ (p=1.000 n=1+1)
GoMapClear/NonReflexive/10-12 75.0ns ± 0% 76.1ns ± 0% ~ (p=1.000 n=1+1)
GoMapClear/NonReflexive/100-12 203ns ± 0% 206ns ± 0% ~ (p=1.000 n=1+1)
GoMapClear/NonReflexive/1000-12 2.33µs ± 0% 2.33µs ± 0% ~ (all samples are equal)
GoMapClear/NonReflexive/10000-12 18.1µs ± 0% 18.1µs ± 0% ~ (p=1.000 n=1+1)
Fixes #25237
Change-Id: I629a79dd7c562ba18bd94159673c3b9b653da643
Reviewed-on: https://go-review.googlesource.com/c/go/+/253020
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/testing/testing_test.go')
0 files changed, 0 insertions, 0 deletions
