mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Fix for bug#14780 memory leak for mysql 4.1.14 with openssl enabled
This commit is contained in:
@@ -1487,11 +1487,15 @@ mysql_ssl_set(MYSQL *mysql __attribute__((unused)) ,
|
|||||||
static void
|
static void
|
||||||
mysql_ssl_free(MYSQL *mysql __attribute__((unused)))
|
mysql_ssl_free(MYSQL *mysql __attribute__((unused)))
|
||||||
{
|
{
|
||||||
|
struct st_VioSSLConnectorFd *st=
|
||||||
|
(struct st_VioSSLConnectorFd*) mysql->connector_fd;
|
||||||
my_free(mysql->options.ssl_key, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(mysql->options.ssl_key, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
my_free(mysql->options.ssl_cert, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(mysql->options.ssl_cert, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
my_free(mysql->options.ssl_ca, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(mysql->options.ssl_ca, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
my_free(mysql->options.ssl_capath, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(mysql->options.ssl_capath, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
my_free(mysql->options.ssl_cipher, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(mysql->options.ssl_cipher, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
|
if (st)
|
||||||
|
SSL_CTX_free(st->ssl_context);
|
||||||
my_free(mysql->connector_fd,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(mysql->connector_fd,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
mysql->options.ssl_key = 0;
|
mysql->options.ssl_key = 0;
|
||||||
mysql->options.ssl_cert = 0;
|
mysql->options.ssl_cert = 0;
|
||||||
|
@@ -83,7 +83,7 @@ void vio_reset(Vio* vio, enum enum_vio_type type,
|
|||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
if (type == VIO_TYPE_SSL)
|
if (type == VIO_TYPE_SSL)
|
||||||
{
|
{
|
||||||
vio->viodelete =vio_ssl_delete;
|
vio->viodelete =vio_delete;
|
||||||
vio->vioerrno =vio_ssl_errno;
|
vio->vioerrno =vio_ssl_errno;
|
||||||
vio->read =vio_ssl_read;
|
vio->read =vio_ssl_read;
|
||||||
vio->write =vio_ssl_write;
|
vio->write =vio_ssl_write;
|
||||||
|
@@ -28,7 +28,6 @@ void vio_ignore_timeout(Vio *vio, uint which, uint timeout);
|
|||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
#include "my_net.h" /* needed because of struct in_addr */
|
#include "my_net.h" /* needed because of struct in_addr */
|
||||||
|
|
||||||
void vio_ssl_delete(Vio* vio);
|
|
||||||
int vio_ssl_read(Vio *vio,gptr buf, int size);
|
int vio_ssl_read(Vio *vio,gptr buf, int size);
|
||||||
int vio_ssl_write(Vio *vio,const gptr buf,int size);
|
int vio_ssl_write(Vio *vio,const gptr buf,int size);
|
||||||
void vio_ssl_timeout(Vio *vio, uint which, uint timeout);
|
void vio_ssl_timeout(Vio *vio, uint which, uint timeout);
|
||||||
|
19
vio/viossl.c
19
vio/viossl.c
@@ -69,25 +69,6 @@ report_errors()
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Delete a vio object
|
|
||||||
|
|
||||||
SYNPOSIS
|
|
||||||
vio_ssl_delete()
|
|
||||||
vio Vio object. May be 0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
void vio_ssl_delete(Vio * vio)
|
|
||||||
{
|
|
||||||
if (vio)
|
|
||||||
{
|
|
||||||
if (vio->type != VIO_CLOSED)
|
|
||||||
vio_close(vio);
|
|
||||||
my_free((gptr) vio,MYF(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int vio_ssl_errno(Vio *vio __attribute__((unused)))
|
int vio_ssl_errno(Vio *vio __attribute__((unused)))
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user