From 5caa2779762c3d760f33b70cd9e1f70f15f3ea57 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 10 Sep 2020 15:47:41 +0200 Subject: [PATCH] Fix potential leak in RSA method --- src/p11_rsa.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/p11_rsa.c b/src/p11_rsa.c index 221513c7..b6beef0b 100644 --- a/src/p11_rsa.c +++ b/src/p11_rsa.c @@ -352,6 +352,11 @@ int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) return meth->rsa_priv_dec; } +static int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa) +{ + return meth->finish; +} + #endif static int pkcs11_rsa_priv_dec_method(int flen, const unsigned char *from, @@ -383,6 +388,11 @@ static int pkcs11_rsa_priv_enc_method(int flen, const unsigned char *from, static int pkcs11_rsa_free_method(RSA *rsa) { RSA_set_ex_data(rsa, rsa_ex_index, NULL); + int (*orig_rsa_free_method)(RSA *rsa) = + RSA_meth_get_finish(RSA_get_default_method()); + if (orig_rsa_free_method) { + return orig_rsa_free_method(rsa); + } return 1; }