>> Drop optimization level...
> 
> -O3 and -O2 segfault. -O1 and -O0 do work and test passes.

This is definition of compiler bug. Indeed, looking at disassembler output:

0x805085e:       movl   0x24(%esp,1),%esi
0x8050862:       movl   0xffffff94(%esi),%esi
0x8050865:       movl   0xffffff90(%esi),%edx   <== segfault

As we see 2nd instruction above overwrites input address loaded by 1st 
one and the result of 3rd is therefore deplorable. I mean 2nd 
instruction should have targeted some other register, not %esi, e.g. it 
could have been 'movl offset(%esi),%eax'.

>> Test attached patch.
> 
> | $ test/sha512t
> | Testing SHA-512 ... passed.
> | Testing SHA-384 ... passed.
> 
> Excellent! Your patch works at any optimization level.

Great. I'm applying it and dismissing the case. Thanks. A.


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to