]> Cypherpunks repositories - gostls13.git/commit
runtime: fix aeshash of empty string
authorKeith Randall <khr@golang.org>
Tue, 1 Sep 2015 19:53:15 +0000 (12:53 -0700)
committerKeith Randall <khr@golang.org>
Tue, 15 Sep 2015 17:51:23 +0000 (17:51 +0000)
commit731bdc51157fd7f685fb73c298e97922318ac453
tree68a0f0718ef3c2dda68c2fe7b615978c1284493f
parent3d5bed272624fede0e5249f9e7a13ee779e2ba17
runtime: fix aeshash of empty string

Aeshash currently computes the hash of the empty string as
hash("", seed) = seed.  This is bad because the hash of a compound
object with empty strings in it doesn't include information about
where those empty strings were.  For instance [2]string{"", "foo"}
and [2]string{"foo", ""} might get the same hash.

Fix this by returning a scrambled seed instead of the seed itself.
With this fix, we can remove the scrambling done by the generated
array hash routines.

The test also rejects hash("", seed) = 0, if we ever thought
it would be a good idea to try that.

The fallback hash is already OK in this regard.

Change-Id: Iaedbaa5be8d6a246dc7e9383d795000e0f562037
Reviewed-on: https://go-review.googlesource.com/14129
Reviewed-by: jcd . <jcd@golang.org>
src/cmd/compile/internal/gc/subr.go
src/runtime/asm_386.s
src/runtime/asm_amd64.s
src/runtime/hash_test.go