---
 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

Reply via email to