summaryrefslogtreecommitdiffstats
path: root/crypto/bn/asm/sparcv9-mont.pl
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2018-06-08 15:02:39 +0200
committerAndy Polyakov <appro@openssl.org>2018-06-09 14:47:37 +0200
commitf55ef97b5c0f8559f393b72ebd4b2de32ad6d231 (patch)
tree7de464ad25c07b4318d87f8cecbeb914b36865b3 /crypto/bn/asm/sparcv9-mont.pl
parentrand/rand_unix.c: bypass DSO_global_lookup on ELF systems. (diff)
downloadopenssl-f55ef97b5c0f8559f393b72ebd4b2de32ad6d231.tar.xz
openssl-f55ef97b5c0f8559f393b72ebd4b2de32ad6d231.zip
bn/asm/sparcv9-mont.pl: iron another glitch in squaring code path.
This module is used only with odd input lengths, i.e. not used in normal PKI cases, on contemporary processors. The problem was "illuminated" by fuzzing tests. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6440)
Diffstat (limited to '')
-rw-r--r--crypto/bn/asm/sparcv9-mont.pl3
1 files changed, 3 insertions, 0 deletions
diff --git a/crypto/bn/asm/sparcv9-mont.pl b/crypto/bn/asm/sparcv9-mont.pl
index c0407b1b1b..b41903af98 100644
--- a/crypto/bn/asm/sparcv9-mont.pl
+++ b/crypto/bn/asm/sparcv9-mont.pl
@@ -493,6 +493,9 @@ $code.=<<___;
mulx $npj,$mul1,$acc1
add $tpj,$car1,$car1
ld [$np+$j],$npj ! np[j]
+ srlx $car1,32,$tmp0
+ and $car1,$mask,$car1
+ add $tmp0,$sbit,$sbit
add $acc0,$car1,$car1
ld [$tp+8],$tpj ! tp[j]
add $acc1,$car1,$car1