Fix various memory leaks in SSL, apps and DSA
diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c
index 4362150..3631188 100644
--- a/ssl/s3_clnt.c
+++ b/ssl/s3_clnt.c
@@ -814,8 +814,9 @@
 		ssl3_send_alert(s,SSL3_AL_FATAL,al);
 		}
 err:
-	if (x != NULL) X509_free(x);
-	if (sk != NULL) sk_pop_free(sk,X509_free);
+	EVP_PKEY_free(pkey);
+	X509_free(x);
+	sk_pop_free(sk,X509_free);
 	return(ret);
 	}
 
@@ -1103,11 +1104,12 @@
 			goto f_err;
 			}
 		}
-
+	EVP_PKEY_free(pkey);
 	return(1);
 f_err:
 	ssl3_send_alert(s,SSL3_AL_FATAL,al);
 err:
+	EVP_PKEY_free(pkey);
 	return(-1);
 	}
 
@@ -1622,6 +1624,7 @@
 	idx=c->cert_type;
 	pkey=X509_get_pubkey(c->pkeys[idx].x509);
 	i=X509_certificate_type(c->pkeys[idx].x509,pkey);
+	EVP_PKEY_free(pkey);
 
 	
 	/* Check that we have a certificate if we require one */