siphash faulty on arm little endian with word align - missing code
|ruby -v:||ruby 1.9.3p448 (2013-06-27 revision 41675) [arm-linux-eabihf]||Backport:||2.0.0: REQUIRED, 2.1: DONTNEED, 2.2: DONTNEED|
siphash.c check for "little endian+unaligned word access" and
"bigendian". But my arch : armv7-a cortex a9 is little endian word
aligned. This discard the loop that reduce the input below 8 bytes and a
case when the leftover is four bytes.
I found this issue via bundler as it uses the hash of an array (the
collision is "sub-setter".hash and "discoverer".hash has they both share
all other fields (platform and version both at 0.0.2).
I reported it back then as public
- testcase: "collision.rb" # on arm (odroid u2) #$ ruby ~/collision.rb #708079652 #708079652
p ["discoverer", Gem::Version.new("0.0.2"), "ruby"].hash
p ["sub-setter", Gem::Version.new("0.0.2"), "ruby"].hash
NB: For now I rebuild with those check for UNALIGNED_WORD_ACCESS removed and
at least I get way less conflict . This is no proper fix though.
siphash.c: fix missing condition
- siphash.c (sip_hash24): fix for aligned word access little endian platforms. [Bug #9172]
#2 Updated by Yusuke Endoh almost 2 years ago
I confirmed the issue on my BeagleBone Black.
$ ./miniruby -ve 'p ["discoverer".hash, "sub-setter".hash]' ruby 2.1.0dev (2013-11-28 trunk 43540) [armv7l-linux-eabihf] [-51053038, -51053038]
I think this is a bug of the siphash-c upstream:
The bug was introduced by nobu, interestingly.
Yusuke Endoh email@example.com
#3 Updated by Nobuyoshi Nakada almost 2 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100