Skip to content

Commit 3d4aae6

Browse files
author
Igor Solodovnikov
committed
Bug #17337684 MEMORY LEAK IN CLI_MYSQL_REAL_CONNECT() FUNCTION
Memory leak in cli_mysql_real_connect() was caused by 'goto error' statements after failing call to vio_new() or vio_reset(). Those gotos skipped freeaddrinfo() for res_lst and client_bind_ai_lst. Fixed by adding explicit calls to freeaddrinfo() before both problematic 'goto error' statements.
1 parent ac20ef2 commit 3d4aae6

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

sql-common/client.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3500,6 +3500,9 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
35003500
{
35013501
set_mysql_error(mysql, CR_OUT_OF_MEMORY, unknown_sqlstate);
35023502
closesocket(sock);
3503+
freeaddrinfo(res_lst);
3504+
if (client_bind_ai_lst)
3505+
freeaddrinfo(client_bind_ai_lst);
35033506
goto error;
35043507
}
35053508
}
@@ -3508,6 +3511,9 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
35083511
{
35093512
set_mysql_error(mysql, CR_UNKNOWN_ERROR, unknown_sqlstate);
35103513
closesocket(sock);
3514+
freeaddrinfo(res_lst);
3515+
if (client_bind_ai_lst)
3516+
freeaddrinfo(client_bind_ai_lst);
35113517
goto error;
35123518
}
35133519

0 commit comments

Comments
 (0)