From d694d2942e373040988fabfcee4db0382cd45d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sat, 18 Aug 2018 13:34:02 +0200 Subject: [PATCH] Fxied a crashing bug caused by a buffer overflow --- lib/MySQL_HostGroups_Manager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/MySQL_HostGroups_Manager.cpp b/lib/MySQL_HostGroups_Manager.cpp index d152fcf42..7ab390ab9 100644 --- a/lib/MySQL_HostGroups_Manager.cpp +++ b/lib/MySQL_HostGroups_Manager.cpp @@ -3631,7 +3631,7 @@ void MySQL_HostGroups_Manager::update_galera_set_offline(char *_hostname, int _p char *q=NULL; char *error=NULL; q=(char *)"SELECT hostgroup_id FROM mysql_servers JOIN mysql_galera_hostgroups ON hostgroup_id=writer_hostgroup OR hostgroup_id=backup_writer_hostgroup OR hostgroup_id=reader_hostgroup WHERE hostname='%s' AND port=%d AND status<>3"; - query=(char *)malloc(strlen(q)+strlen(_hostname)+32); + query=(char *)malloc(strlen(q)+strlen(_hostname)+1024); // increased this buffer as it is used for other queries too sprintf(query,q,_hostname,_port); mydb->execute_statement(query, &error , &cols , &affected_rows , &resultset); if (error) { @@ -3779,7 +3779,7 @@ void MySQL_HostGroups_Manager::update_galera_set_read_only(char *_hostname, int mydb->execute("DELETE FROM mysql_servers_incoming"); mydb->execute("INSERT INTO mysql_servers_incoming SELECT hostgroup_id, hostname, port, gtid_port, weight, status, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment FROM mysql_servers"); q=(char *)"UPDATE OR IGNORE mysql_servers_incoming SET hostgroup_id=(SELECT reader_hostgroup FROM mysql_galera_hostgroups WHERE writer_hostgroup=%d) WHERE hostname='%s' AND port=%d AND hostgroup_id<>(SELECT reader_hostgroup FROM mysql_galera_hostgroups WHERE writer_hostgroup=%d)"; - query=(char *)malloc(strlen(q)+strlen(_hostname)+64); + query=(char *)malloc(strlen(q)+strlen(_hostname)+512); sprintf(query,q,_writer_hostgroup,_hostname,_port,_writer_hostgroup); mydb->execute(query); //free(query); @@ -3927,7 +3927,7 @@ void MySQL_HostGroups_Manager::update_galera_set_writer(char *_hostname, int _po mydb->execute("DELETE FROM mysql_servers_incoming"); mydb->execute("INSERT INTO mysql_servers_incoming SELECT hostgroup_id, hostname, port, gtid_port, weight, status, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment FROM mysql_servers"); q=(char *)"UPDATE OR IGNORE mysql_servers_incoming SET hostgroup_id=%d WHERE hostname='%s' AND port=%d AND hostgroup_id<>%d"; - query=(char *)malloc(strlen(q)+strlen(_hostname)+256); + query=(char *)malloc(strlen(q)+strlen(_hostname)+1024); // increased this buffer as it is used for other queries too sprintf(query,q,_writer_hostgroup,_hostname,_port,_writer_hostgroup); mydb->execute(query); //free(query);