From ffc7e7aa103dc598fd5e4d44800557b6e7fcd8b1 Mon Sep 17 00:00:00 2001 From: MassimilianoPinto Date: Fri, 12 Sep 2014 15:36:22 +0200 Subject: [PATCH] Fix for server_string memory leak Fix for server_string memory leak --- server/modules/monitor/galera_mon.c | 4 +++- server/modules/monitor/mysql_mon.c | 4 +++- server/modules/monitor/ndbcluster_mon.c | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/server/modules/monitor/galera_mon.c b/server/modules/monitor/galera_mon.c index de71c4dfb..211407f86 100644 --- a/server/modules/monitor/galera_mon.c +++ b/server/modules/monitor/galera_mon.c @@ -359,7 +359,9 @@ char *server_string; /* get server version string */ server_string = (char *)mysql_get_server_info(database->con); if (server_string) { - database->server->server_string = strdup(server_string); + database->server->server_string = realloc(database->server->server_string, strlen(server_string)+1); + if (database->server->server_string) + strcpy(database->server->server_string, server_string); } /* Check if the the Galera FSM shows this node is joined to the cluster */ diff --git a/server/modules/monitor/mysql_mon.c b/server/modules/monitor/mysql_mon.c index fb86fc0fc..976aa315d 100644 --- a/server/modules/monitor/mysql_mon.c +++ b/server/modules/monitor/mysql_mon.c @@ -439,7 +439,9 @@ char *server_string; /* get server version string */ server_string = (char *)mysql_get_server_info(database->con); if (server_string) { - database->server->server_string = strdup(server_string); + database->server->server_string = realloc(database->server->server_string, strlen(server_string)+1); + if (database->server->server_string) + strcpy(database->server->server_string, server_string); } /* get server_id form current node */ diff --git a/server/modules/monitor/ndbcluster_mon.c b/server/modules/monitor/ndbcluster_mon.c index f83ee7ae7..840e30691 100644 --- a/server/modules/monitor/ndbcluster_mon.c +++ b/server/modules/monitor/ndbcluster_mon.c @@ -353,7 +353,9 @@ char *server_string; /* get server version string */ server_string = (char *)mysql_get_server_info(database->con); if (server_string) { - database->server->server_string = strdup(server_string); + database->server->server_string = realloc(database->server->server_string, strlen(server_string)+1); + if (database->server->server_string) + strcpy(database->server->server_string, server_string); } /* Check if the the SQL node is able to contact one or more data nodes */