From: Dr. Stephen Henson Date: Sun, 9 Oct 2011 23:09:22 +0000 (+0000) Subject: fix memory leaks X-Git-Tag: OpenSSL_1_0_1-beta1~136 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=88bac3e6642dd8992dfff0070dd3a6a7a180af9e fix memory leaks --- diff --git a/crypto/engine/eng_rsax.c b/crypto/engine/eng_rsax.c index cbe8419a4c..ef29f33edc 100644 --- a/crypto/engine/eng_rsax.c +++ b/crypto/engine/eng_rsax.c @@ -108,6 +108,7 @@ static int e_rsax_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)(void)); /* RSA stuff */ static int e_rsax_rsa_mod_exp(BIGNUM *r, const BIGNUM *I, RSA *rsa, BN_CTX *ctx); static int e_rsax_rsa_finish(RSA *r); +static int (*def_rsa_finish)(RSA *r); #endif static const ENGINE_CMD_DEFN e_rsax_cmd_defns[] = { @@ -163,7 +164,7 @@ static int bind_helper(ENGINE *e) e_rsax_rsa.rsa_priv_enc = meth1->rsa_priv_enc; e_rsax_rsa.rsa_priv_dec = meth1->rsa_priv_dec; e_rsax_rsa.bn_mod_exp = meth1->bn_mod_exp; - e_rsax_rsa.finish = meth1->finish; + def_rsa_finish = meth1->finish; #endif return 1; } @@ -310,6 +311,8 @@ static int e_rsax_rsa_finish(RSA *rsa) OPENSSL_free(hptr); RSA_set_ex_data(rsa, rsax_ex_data_idx, NULL); + if (def_rsa_finish) + def_rsa_finish(rsa); return 1; } @@ -468,7 +471,7 @@ static int mod_exp_pre_compute_data_512(UINT64 *m, struct mod_ctx_512 *data) err: /* Cleanup */ if (ctx != NULL) { - BN_CTX_end(ctx); } + BN_CTX_end(ctx); BN_CTX_free(ctx); } BN_free(&two_768); BN_free(&two_640); BN_free(&two_128);