---
src/crypto/srp/srp_lib.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/crypto/srp/srp_lib.c b/src/crypto/srp/srp_lib.c
index 15e751c..0875b29 100644
--- a/src/crypto/srp/srp_lib.c
+++ b/src/crypto/srp/srp_lib.c
@@ -256,7 +256,7 @@ BIGNUM *SRP_Calc_A(BIGNUM *a, BIGNUM *N, BIGNUM *g)
BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x, BIGNUM
*a, BIGNUM *u)
{
- BIGNUM *tmp = NULL, *tmp2 = NULL, *tmp3 = NULL , *k = NULL, *K = NULL;
+ BIGNUM *tmp = NULL, *tmp2 = NULL, *tmp3 = NULL , *k = NULL, *K = NULL,
*ret = NULL;
BN_CTX *bn_ctx;
if (u == NULL || B == NULL || N == NULL || g == NULL || x == NULL || a
== NULL ||
@@ -285,13 +285,17 @@ BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM
*g, BIGNUM *x, BIGNUM *
if (!BN_mod_exp(K,tmp,tmp2,N,bn_ctx))
goto err;
+ ret = K;
+ K = NULL;
+
err :
BN_CTX_free(bn_ctx);
BN_clear_free(tmp);
BN_clear_free(tmp2);
BN_clear_free(tmp3);
+ BN_clear_free(K);
BN_free(k);
- return K;
+ return ret;
}
int SRP_Verify_B_mod_N(BIGNUM *B, BIGNUM *N)
--
1.7.10.4