forked from wolfSSL/wolfssl
free WOLFSSL_BIGNUM when wolfSSL_BN_mod_inverse() fails if dynamic
This commit is contained in:
14
src/ssl.c
14
src/ssl.c
@ -19227,11 +19227,13 @@ WOLFSSL_BIGNUM *wolfSSL_BN_mod_inverse(WOLFSSL_BIGNUM *r,
|
|||||||
const WOLFSSL_BIGNUM *n,
|
const WOLFSSL_BIGNUM *n,
|
||||||
WOLFSSL_BN_CTX *ctx)
|
WOLFSSL_BN_CTX *ctx)
|
||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_BN_mod_inverse");
|
int dynamic = 0;
|
||||||
|
|
||||||
/* ctx is not used */
|
/* ctx is not used */
|
||||||
(void)ctx;
|
(void)ctx;
|
||||||
|
|
||||||
|
WOLFSSL_ENTER("wolfSSL_BN_mod_inverse");
|
||||||
|
|
||||||
/* check parameter */
|
/* check parameter */
|
||||||
if (r == NULL) {
|
if (r == NULL) {
|
||||||
r = wolfSSL_BN_new();
|
r = wolfSSL_BN_new();
|
||||||
@ -19239,15 +19241,22 @@ WOLFSSL_BIGNUM *wolfSSL_BN_mod_inverse(WOLFSSL_BIGNUM *r,
|
|||||||
WOLFSSL_MSG("WolfSSL_BN_new() failed");
|
WOLFSSL_MSG("WolfSSL_BN_new() failed");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
dynamic = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a == NULL) {
|
if (a == NULL) {
|
||||||
WOLFSSL_MSG("a NULL error");
|
WOLFSSL_MSG("a NULL error");
|
||||||
|
if (dynamic == 1) {
|
||||||
|
wolfSSL_BN_free(r);
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n == NULL) {
|
if (n == NULL) {
|
||||||
WOLFSSL_MSG("n NULL error");
|
WOLFSSL_MSG("n NULL error");
|
||||||
|
if (dynamic == 1) {
|
||||||
|
wolfSSL_BN_free(r);
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19255,6 +19264,9 @@ WOLFSSL_BIGNUM *wolfSSL_BN_mod_inverse(WOLFSSL_BIGNUM *r,
|
|||||||
if (mp_invmod((mp_int *)a->internal,(mp_int *)n->internal,
|
if (mp_invmod((mp_int *)a->internal,(mp_int *)n->internal,
|
||||||
(mp_int*)r->internal) == MP_VAL){
|
(mp_int*)r->internal) == MP_VAL){
|
||||||
WOLFSSL_MSG("mp_invmod() error");
|
WOLFSSL_MSG("mp_invmod() error");
|
||||||
|
if (dynamic == 1) {
|
||||||
|
wolfSSL_BN_free(r);
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user