Commit 50596582 authored by Bodo Möller's avatar Bodo Möller
Browse files

fix memory leak in s3_clnt.c

parent d9f0016b
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -4,6 +4,12 @@


 Changes between 0.9.3a and 0.9.4
 Changes between 0.9.3a and 0.9.4


  *) Fix memory leaks in s3_clnt.c: All non-anonymous SSL3/TLS1 connections
     without temporary keys kept an extra copy of the server key,
     and connections with temporary keys did not free everything in case
     of an error.
     [Bodo Moeller]

  *) New function RSA_check_key and new openssl rsa option -check
  *) New function RSA_check_key and new openssl rsa option -check
     for verifying the consistency of RSA keys.
     for verifying the consistency of RSA keys.
     [Ulf Moeller, Bodo Moeller]
     [Ulf Moeller, Bodo Moeller]
+22 −14
Original line number Original line Diff line number Diff line
@@ -226,6 +226,9 @@ static void sv_usage(void)
	BIO_printf(bio_err," -no_ssl2      - Just disable SSLv2\n");
	BIO_printf(bio_err," -no_ssl2      - Just disable SSLv2\n");
	BIO_printf(bio_err," -no_ssl3      - Just disable SSLv3\n");
	BIO_printf(bio_err," -no_ssl3      - Just disable SSLv3\n");
	BIO_printf(bio_err," -no_tls1      - Just disable TLSv1\n");
	BIO_printf(bio_err," -no_tls1      - Just disable TLSv1\n");
#ifndef NO_DH
	BIO_printf(bio_err," -no_dhe       - Disable ephemeral DH\n");
#endif
	BIO_printf(bio_err," -bugs         - Turn on SSL bug compatability\n");
	BIO_printf(bio_err," -bugs         - Turn on SSL bug compatability\n");
	BIO_printf(bio_err," -www          - Respond to a 'GET /' with a status page\n");
	BIO_printf(bio_err," -www          - Respond to a 'GET /' with a status page\n");
	BIO_printf(bio_err," -WWW          - Respond to a 'GET /<path> HTTP/1.0' with file ./<path>\n");
	BIO_printf(bio_err," -WWW          - Respond to a 'GET /<path> HTTP/1.0' with file ./<path>\n");
@@ -393,7 +396,7 @@ int MAIN(int argc, char *argv[])
	int badop=0,bugs=0;
	int badop=0,bugs=0;
	int ret=1;
	int ret=1;
	int off=0;
	int off=0;
	int no_tmp_rsa=0,nocert=0;
	int no_tmp_rsa=0,no_dhe=0,nocert=0;
	int state=0;
	int state=0;
	SSL_METHOD *meth=NULL;
	SSL_METHOD *meth=NULL;
#ifndef NO_DH
#ifndef NO_DH
@@ -518,6 +521,8 @@ int MAIN(int argc, char *argv[])
			{ bugs=1; }
			{ bugs=1; }
		else if	(strcmp(*argv,"-no_tmp_rsa") == 0)
		else if	(strcmp(*argv,"-no_tmp_rsa") == 0)
			{ no_tmp_rsa=1; }
			{ no_tmp_rsa=1; }
		else if	(strcmp(*argv,"-no_dhe") == 0)
			{ no_dhe=1; }
		else if	(strcmp(*argv,"-www") == 0)
		else if	(strcmp(*argv,"-www") == 0)
			{ www=1; }
			{ www=1; }
		else if	(strcmp(*argv,"-WWW") == 0)
		else if	(strcmp(*argv,"-WWW") == 0)
@@ -620,6 +625,8 @@ bad:
		}
		}


#ifndef NO_DH
#ifndef NO_DH
	if (!no_dhe)
		{
		/* EAY EAY EAY evil hack */
		/* EAY EAY EAY evil hack */
		dh=load_dh_param();
		dh=load_dh_param();
		if (dh != NULL)
		if (dh != NULL)
@@ -635,6 +642,7 @@ bad:


		SSL_CTX_set_tmp_dh(ctx,dh);
		SSL_CTX_set_tmp_dh(ctx,dh);
		DH_free(dh);
		DH_free(dh);
		}
#endif
#endif
	
	
	if (!set_cert_stuff(ctx,s_cert_file,s_key_file))
	if (!set_cert_stuff(ctx,s_cert_file,s_key_file))
+1 −0
Original line number Original line Diff line number Diff line
@@ -1336,6 +1336,7 @@ static int ssl3_send_client_key_exchange(SSL *s)
					goto err;
					goto err;
					}
					}
				rsa=pkey->pkey.rsa;
				rsa=pkey->pkey.rsa;
				EVP_PKEY_free(pkey);
				}
				}
				
				
			tmp_buf[0]=s->client_version>>8;
			tmp_buf[0]=s->client_version>>8;