Hi Bernhard!

On Sun, 13 Dec 2020, Bernhard Übelacker wrote:

> Dear Maintainer,
> I tried to collect some more information and compared this
> situation on real hardware armv5tel with an armv7 and
> it looks like in keccak_finalize the following instruction
> stores different data to memory depending on the arm hardware:
> 
>    0x005c4ac0 <keccak_finalize+192>:    f0 20 c4 e1     strd    r2, [r4]
> 
> In the failing case this is stored:
>     (gdb) x/8xb &((keccak_state *) 0xbeffef5c)->a
>     0xbeffef5c:     0x6f    0x6e    0x20    0x63    0x00    0x00    0x00    
> 0x00
> 
> And in the good case this:
>     (gdb) x/8xb &((keccak_state *) 0xbeffef5c)->a
>     0xbeffef5c:     0x2e    0x6f    0x6e    0x69    0x6f    0x6e    0x20    
> 0x63
> 
> While on both the registers r2 and r3 contain:
>     r2             0x696e6f2e          1768845102
>     r3             0x63206e6f          1663069807
> 
> In the attached files are some more details leading to the above result.

Can you try to rebuild tor with __attribute__((aligned(8))) for the
keccak_state as suggested in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=975977#44
and then let us know if the issue is still there?
-- 
                            |  .''`.       ** Debian **
      Peter Palfrader       | : :' :      The  universal
 https://www.palfrader.org/ | `. `'      Operating System
                            |   `-    https://www.debian.org/

Reply via email to