summaryrefslogtreecommitdiff
path: root/vio
diff options
context:
space:
mode:
authormsvensson@neptunus.(none) <>2006-11-07 15:20:24 +0100
committermsvensson@neptunus.(none) <>2006-11-07 15:20:24 +0100
commitffa100d2d0e530fda8da89eb85468061b9a9ed53 (patch)
tree5025e34d504aa58424ac727e8adb3279151e76e2 /vio
parent2d952d336eb20dddd7dd6665fa3bc17899b3843b (diff)
downloadmariadb-git-ffa100d2d0e530fda8da89eb85468061b9a9ed53.tar.gz
Bug#23981 memory leaks from yassl code + other
- Fix memory leak in vio_VioSSLFD that occurs when one of the calls to SSL_* function fails. As in the "ssl_des" test case where the server is currently not supposed to be able to read the specific cert/key file. - Change error message to be generic as it's called both from server and client code.
Diffstat (limited to 'vio')
-rw-r--r--vio/viosslfactories.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/vio/viosslfactories.c b/vio/viosslfactories.c
index 9fd18579351..34ce1fefaa9 100644
--- a/vio/viosslfactories.c
+++ b/vio/viosslfactories.c
@@ -86,8 +86,7 @@ vio_set_cert_stuff(SSL_CTX *ctx, const char *cert_file, const char *key_file)
if (SSL_CTX_use_certificate_file(ctx, cert_file, SSL_FILETYPE_PEM) <= 0)
{
DBUG_PRINT("error",("unable to get certificate from '%s'\n", cert_file));
- /* FIX stderr */
- fprintf(stderr,"Error when connection to server using SSL:");
+ fprintf(stderr,"SSL error: ");
ERR_print_errors_fp(stderr);
fprintf(stderr,"Unable to get certificate from '%s'\n", cert_file);
fflush(stderr);
@@ -100,8 +99,7 @@ vio_set_cert_stuff(SSL_CTX *ctx, const char *cert_file, const char *key_file)
if (SSL_CTX_use_PrivateKey_file(ctx, key_file, SSL_FILETYPE_PEM) <= 0)
{
DBUG_PRINT("error", ("unable to get private key from '%s'\n", key_file));
- /* FIX stderr */
- fprintf(stderr,"Error when connection to server using SSL:");
+ fprintf(stderr,"SSL error: ");
ERR_print_errors_fp(stderr);
fprintf(stderr,"Unable to get private key from '%s'\n", key_file);
fflush(stderr);
@@ -252,6 +250,7 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
{
DBUG_PRINT("error", ("failed to set ciphers to use"));
report_errors();
+ SSL_CTX_free(ssl_fd->ssl_context);
my_free((void*)ssl_fd,MYF(0));
DBUG_RETURN(0);
}
@@ -264,6 +263,7 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
{
DBUG_PRINT("error", ("SSL_CTX_set_default_verify_paths failed"));
report_errors();
+ SSL_CTX_free(ssl_fd->ssl_context);
my_free((void*)ssl_fd,MYF(0));
DBUG_RETURN(0);
}
@@ -273,6 +273,7 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
{
DBUG_PRINT("error", ("vio_set_cert_stuff failed"));
report_errors();
+ SSL_CTX_free(ssl_fd->ssl_context);
my_free((void*)ssl_fd,MYF(0));
DBUG_RETURN(0);
}