bn/asm/x86_64-mont5.pl: fix valgrind error.

bn_get_bits5 was overstepping array boundary by 1 byte. It was exclusively
read overstep and data could not have been used. The only potential problem
would be if array happens to end on the very edge of last accesible page.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(cherry picked from commit 69567687b0)
This commit is contained in:
Andy Polyakov 2015-05-20 09:36:48 +02:00
parent 0945bfcb22
commit 0a59e2dc30

View File

@ -3226,11 +3226,16 @@ $code.=<<___;
.type bn_get_bits5,\@abi-omnipotent .type bn_get_bits5,\@abi-omnipotent
.align 16 .align 16
bn_get_bits5: bn_get_bits5:
mov $inp,%r10 lea 0($inp),%r10
lea 1($inp),%r11
mov $num,%ecx mov $num,%ecx
shr \$3,$num shr \$4,$num
movzw (%r10,$num),%eax and \$15,%ecx
and \$7,%ecx lea -8(%ecx),%eax
cmp \$11,%ecx
cmova %r11,%r10
cmova %eax,%ecx
movzw (%r10,$num,2),%eax
shrl %cl,%eax shrl %cl,%eax
and \$31,%eax and \$31,%eax
ret ret