summaryrefslogtreecommitdiffstats
path: root/crypto/bn/asm
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
parent913cebc8f44d50479704040c77d9ed20eea839bc (diff)
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 'crypto/bn/asm')
-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