• Keith Randall's avatar
    runtime: fix aeshash of empty string · 731bdc51
    Keith Randall authored
    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/14129Reviewed-by: 's avatarjcd . <jcd@golang.org>
    731bdc51
hash_test.go 14.5 KB