summaryrefslogtreecommitdiffstats
path: root/crypto/bn
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2000-12-13 14:47:06 +0000
committerRichard Levitte <levitte@openssl.org>2000-12-13 14:47:06 +0000
commit765e5311590b9970d8bd33771fb198cea30b0c05 (patch)
treeb0798ccf1f6b58789a487f5cd2f839cfc9c9f2e3 /crypto/bn
parentde282fe3bae27d2d64d9b9a0b0870b3a01a57c3e (diff)
In bn_mul_recursive(), make sure the comba routines are only called
when both a and b are of the exact right size. This may change to something better later.
Diffstat (limited to 'crypto/bn')
-rw-r--r--crypto/bn/bn_mul.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/crypto/bn/bn_mul.c b/crypto/bn/bn_mul.c
index b9d2b3c2cc..b4ed7e23e6 100644
--- a/crypto/bn/bn_mul.c
+++ b/crypto/bn/bn_mul.c
@@ -66,7 +66,7 @@
#include "cryptlib.h"
#include "bn_lcl.h"
-#if defined(NO_ASM) || !defined(i386)
+#if defined(NO_ASM)
/* Here follows specialised variants of bn_add_words() and
bn_sub_words(). They have the property performing operations on
arrays of different sizes. The sizes of those arrays is expressed through
@@ -458,7 +458,8 @@ void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
}
# ifdef BN_MUL_COMBA
- if (n == 4)
+ if (n == 4 && dna == 0 && dnb == 0) /* XXX: bn_mul_comba4 could take
+ extra args to do this well */
{
if (!zero)
bn_mul_comba4(&(t[n2]),t,&(t[n]));
@@ -468,7 +469,9 @@ void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
bn_mul_comba4(r,a,b);
bn_mul_comba4(&(r[n2]),&(a[n]),&(b[n]));
}
- else if (n == 8)
+ else if (n == 8 && dna == 0 && dnb == 0) /* XXX: bn_mul_comba8 could
+ take extra args to do this
+ well */
{
if (!zero)
bn_mul_comba8(&(t[n2]),t,&(t[n]));
@@ -938,7 +941,7 @@ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
int i;
#endif
#ifdef BN_RECURSION
- BIGNUM *t;
+ BIGNUM *t=NULL;
int j=0,k;
#endif