Hello everyone!

Discovered this problem while trying to fix
https://github.com/joyent/node/issues/7704.

Attached is a fix for it.

Cheers,
Fedor.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

- From c6a4d5ff66cd886023f75780e876053f019ed8de Mon Sep 17 00:00:00 2001
From: Fedor Indutny <fe...@indutny.com>
Date: Fri, 6 Jun 2014 14:33:10 -0700
Subject: [PATCH] x86_64 asm: fix bn_mul_mont on odd-len BNs

Fix index overflow in bn_mul_mont and bn_mul_mont_gather5.
- ---
 crypto/bn/asm/x86_64-mont.pl  | 4 ++--
 crypto/bn/asm/x86_64-mont5.pl | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/crypto/bn/asm/x86_64-mont.pl b/crypto/bn/asm/x86_64-mont.pl
index 3803928..7ec1654 100755
- --- a/crypto/bn/asm/x86_64-mont.pl
+++ b/crypto/bn/asm/x86_64-mont.pl
@@ -174,7 +174,7 @@ $code.=<<___;
 
        mulq    $m1                     # np[j]*m1
        cmp     $num,$j
- -     jne     .L1st
+       jl      .L1st
 
        add     %rax,$hi1
        mov     ($ap),%rax              # ap[0]
@@ -240,7 +240,7 @@ $code.=<<___;
 
        mulq    $m1                     # np[j]*m1
        cmp     $num,$j
- -     jne     .Linner
+       jl      .Linner
 
        add     %rax,$hi1
        mov     ($ap),%rax              # ap[0]
diff --git a/crypto/bn/asm/x86_64-mont5.pl b/crypto/bn/asm/x86_64-mont5.pl
index c107df9..5cc0689 100755
- --- a/crypto/bn/asm/x86_64-mont5.pl
+++ b/crypto/bn/asm/x86_64-mont5.pl
@@ -207,7 +207,7 @@ $code.=<<___;
 
        mulq    $m1                     # np[j]*m1
        cmp     $num,$j
- -     jne     .L1st
+       jl      .L1st
 
        movq    %xmm0,$m0               # bp[1]
 
@@ -290,7 +290,7 @@ $code.=<<___;
 
        mulq    $m1                     # np[j]*m1
        cmp     $num,$j
- -     jne     .Linner
+       jl      .Linner
 
        movq    %xmm0,$m0               # bp[i+1]
 
- -- 
1.9.3

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBAgAGBQJTkjPhAAoJEPsOEJWxeXmZc00P/3KY+9WOVwZ2Ad+1uqRquxAQ
zlLDmhRAae0Z7mGrsExW9EHOu0RD8sMgX901uy4CAKOPon86skxbe70TPJ+8ZmMv
tGgHrJhGos6fe6x47r9KgpYFng3lltN/i6rgArDnK9fZa5+7n9/Txz/NjMUgVMd/
Fw0zAvqOqpy5Q5YxgD85tBMInZqliYiV2NGKa7hHlnCcWzqEEZThy0LpAltb4L4c
bBAviH6EzxFWE4i7f9Id0e6V0taoN5LMM0Ia2UikCXlA1sPchwojirmXEVu/vvYu
AnBsnBYLUSxHCnUFOT/EezAkiZlXnQEr8ZGOmoxfPWWrFJ4rMuxgZpjrZbZ6cIwf
CTgP0SxUQkftbP354aAJGeP8c4AtRP/PLEFB1rZovbVC0v99wzAo9xb69yXy+hUR
3D2C1Xcj7TYS2wB+u4sbUvluaLIWLTFCRxiONqNhG3J7oQQHrkleWkhrktbcQBxi
Rotqtn34zkPN6cYWjjc6j6Ww6fQpKRsyRb677fe695Jp/MgRcsg/QTz+uVg5U3HS
tt/9XDm6fg6FKD7PgBNn5okoDkKtWSRUOEUddy28B/YSB/c7AVWvbH6cLW3dp0iF
20/YuGEWSogzOEcy8Tsn0I3owLSMOe5fSCtYMoFJRCD1hlgonXpbEMMq85dnF/vg
JT5UiUwprJ54GkHFnhDX
=j4Ho
-----END PGP SIGNATURE-----

Attachment: 0001-x86_64-asm-fix-bn_mul_mont-on-odd-len-BNs.patch
Description: Binary data

Reply via email to