Avoid memory leak.

This commit is contained in:
Bodo Möller 2000-04-06 22:25:49 +00:00
parent 51175595b3
commit 46b3bd5454

View File

@ -88,6 +88,7 @@
static int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx); static int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx);
#ifndef NO_RSA #ifndef NO_RSA
static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export,int keylength); static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export,int keylength);
static void free_tmp_rsa(void);
#endif #endif
#ifndef NO_DH #ifndef NO_DH
static DH *get_dh512(void); static DH *get_dh512(void);
@ -528,6 +529,9 @@ end:
if (bio_stdout != NULL) BIO_free(bio_stdout); if (bio_stdout != NULL) BIO_free(bio_stdout);
#ifndef NO_RSA
free_tmp_rsa();
#endif
ERR_free_strings(); ERR_free_strings();
ERR_remove_state(0); ERR_remove_state(0);
EVP_cleanup(); EVP_cleanup();
@ -1242,10 +1246,10 @@ static int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
} }
#ifndef NO_RSA #ifndef NO_RSA
static RSA *rsa_tmp=NULL;
static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength) static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength)
{ {
static RSA *rsa_tmp=NULL;
if (rsa_tmp == NULL) if (rsa_tmp == NULL)
{ {
BIO_printf(bio_err,"Generating temp (%d bit) RSA key...",keylength); 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); return(rsa_tmp);
} }
static void free_tmp_rsa(void)
{
if (rsa_tmp != NULL)
{
RSA_free(rsa_tmp);
rsa_tmp = NULL;
}
}
#endif #endif
#ifndef NO_DH #ifndef NO_DH