From 46b3bd54544caf828dcbcac093b5341c10802459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodo=20M=C3=B6ller?= Date: Thu, 6 Apr 2000 22:25:49 +0000 Subject: [PATCH] Avoid memory leak. --- ssl/ssltest.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ssl/ssltest.c b/ssl/ssltest.c index dde35794f..caf5876e5 100644 --- a/ssl/ssltest.c +++ b/ssl/ssltest.c @@ -88,6 +88,7 @@ static int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx); #ifndef NO_RSA static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export,int keylength); +static void free_tmp_rsa(void); #endif #ifndef NO_DH static DH *get_dh512(void); @@ -528,6 +529,9 @@ end: if (bio_stdout != NULL) BIO_free(bio_stdout); +#ifndef NO_RSA + free_tmp_rsa(); +#endif ERR_free_strings(); ERR_remove_state(0); EVP_cleanup(); @@ -1242,10 +1246,10 @@ static int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx) } #ifndef NO_RSA +static RSA *rsa_tmp=NULL; + static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength) { - static RSA *rsa_tmp=NULL; - if (rsa_tmp == NULL) { BIO_printf(bio_err,"Generating temp (%d bit) RSA key...",keylength); @@ -1256,6 +1260,15 @@ static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength) } return(rsa_tmp); } + +static void free_tmp_rsa(void) + { + if (rsa_tmp != NULL) + { + RSA_free(rsa_tmp); + rsa_tmp = NULL; + } + } #endif #ifndef NO_DH