mirror of
https://github.com/openssl/openssl.git
synced 2024-11-25 11:03:37 +08:00
BN_CTX-related fixes.
This commit is contained in:
parent
bb7e632aef
commit
7f7b8d6871
4
CHANGES
4
CHANGES
@ -4,6 +4,10 @@
|
||||
|
||||
Changes between 0.9.6 and 0.9.7 [xx XXX 2000]
|
||||
|
||||
*) Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16.
|
||||
The previous value, 12, was not always sufficient for BN_mod_exp().
|
||||
[Bodo Moeller]
|
||||
|
||||
*) Make DSO load along a path given through an environment variable
|
||||
(SHLIB_PATH) with shl_load().
|
||||
[Richard Levitte]
|
||||
|
@ -239,7 +239,7 @@ typedef struct bignum_st
|
||||
} BIGNUM;
|
||||
|
||||
/* Used for temp variables */
|
||||
#define BN_CTX_NUM 12
|
||||
#define BN_CTX_NUM 16
|
||||
#define BN_CTX_NUM_POS 12
|
||||
typedef struct bignum_ctx
|
||||
{
|
||||
|
@ -112,8 +112,14 @@ void BN_CTX_start(BN_CTX *ctx)
|
||||
ctx->depth++;
|
||||
}
|
||||
|
||||
|
||||
BIGNUM *BN_CTX_get(BN_CTX *ctx)
|
||||
{
|
||||
/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,
|
||||
* make sure that if BN_CTX_get fails once it will return NULL again
|
||||
* until BN_CTX_end is called. (This is so that callers have to check
|
||||
* only the last return value.)
|
||||
*/
|
||||
if (ctx->depth > BN_CTX_NUM_POS || ctx->tos >= BN_CTX_NUM)
|
||||
{
|
||||
if (!ctx->too_many)
|
||||
|
@ -180,13 +180,13 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
|
||||
|
||||
BN_CTX_start(ctx);
|
||||
tmp=BN_CTX_get(ctx);
|
||||
tmp->neg=0;
|
||||
snum=BN_CTX_get(ctx);
|
||||
sdiv=BN_CTX_get(ctx);
|
||||
if (dv == NULL)
|
||||
res=BN_CTX_get(ctx);
|
||||
else res=dv;
|
||||
if (res == NULL) goto err;
|
||||
if (sdiv == NULL || res == NULL) goto err;
|
||||
tmp->neg=0;
|
||||
|
||||
/* First we normalise the numbers */
|
||||
norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2);
|
||||
|
Loading…
Reference in New Issue
Block a user