Avoid memory leak.
authorBodo Möller <bodo@openssl.org>
Thu, 6 Apr 2000 22:25:49 +0000 (22:25 +0000)
committerBodo Möller <bodo@openssl.org>
Thu, 6 Apr 2000 22:25:49 +0000 (22:25 +0000)
ssl/ssltest.c

index dde35794f54a6744191db41a24c7c0c0168e0e15..caf5876e5a2f3f1c58d92e21898e45af888459f5 100644 (file)
@@ -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