projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
'make update'
[oweals/openssl.git]
/
crypto
/
bn
/
bn_mul.c
diff --git
a/crypto/bn/bn_mul.c
b/crypto/bn/bn_mul.c
index 2810115c2ba5e868e97b0ee86e6495c4b20e195b..e0c8ade99652daeb178b85ad82f4bfeaa7c35254 100644
(file)
--- a/
crypto/bn/bn_mul.c
+++ b/
crypto/bn/bn_mul.c
@@
-66,7
+66,7
@@
#include "cryptlib.h"
#include "bn_lcl.h"
#include "cryptlib.h"
#include "bn_lcl.h"
-#if defined(
NO_ASM) || !defined(i386)
+#if defined(
OPENSSL_NO_ASM) || !defined(__i386) /* Assembler implementation exists only for x86 */
/* 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
/* 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
}
# 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]));
{
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]));
}
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]));
{
if (!zero)
bn_mul_comba8(&(t[n2]),t,&(t[n]));
@@
-938,8
+941,8
@@
int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
int i;
#endif
#ifdef BN_RECURSION
int i;
#endif
#ifdef BN_RECURSION
- BIGNUM *t;
- int j,k;
+ BIGNUM *t
=NULL
;
+ int j
=0
,k;
#endif
#ifdef BN_COUNT
#endif
#ifdef BN_COUNT
@@
-1107,7
+1110,13
@@
void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb)
}
rr= &(r[na]);
}
rr= &(r[na]);
- rr[0]=bn_mul_words(r,a,na,b[0]);
+ if (nb <= 0)
+ {
+ (void)bn_mul_words(r,a,na,0);
+ return;
+ }
+ else
+ rr[0]=bn_mul_words(r,a,na,b[0]);
for (;;)
{
for (;;)
{