diff options
author | unknown <holyfoot/hf@mysql.com/hfmain.(none)> | 2007-06-25 16:40:29 +0500 |
---|---|---|
committer | unknown <holyfoot/hf@mysql.com/hfmain.(none)> | 2007-06-25 16:40:29 +0500 |
commit | 57444944d57adc5bee1548e3c2d6bffd2f8d903d (patch) | |
tree | a49c784110d227a525c09288e8fadcb0def9f609 /sql-common | |
parent | cb606a661a6df649fa6197e712373f54e8521d81 (diff) | |
download | mariadb-git-57444944d57adc5bee1548e3c2d6bffd2f8d903d.tar.gz |
Bug #29247 Double free in libmysqlclient_r when mysql restarted.
If one sets MYSQL_READ_DEFAULTS_FILE and MYSQL_READ_DEFAULT_GROUP options
after mysql_real_connect() called with that MYSQL instance,
these options will affect next mysql_reconnect then.
As we use a copy of the original MYSQL object inside mysql_reconnect,
and mysql_real_connect frees options.my_cnf_file and _group strings,
we will free these twice when we execute mysql_reconnect with the
same MYSQL for the second time.
I don't think we should ever read defaults files handling mysql_reconnect.
So i just set them to 0 for the temporary MYSQL object there/
sql-common/client.c:
Bug #29247 Double free in libmysqlclient_r when mysql restarted.
we don't need mysql_real_connect to reread defaults file in this
case, so set related parameters to zero
Diffstat (limited to 'sql-common')
-rw-r--r-- | sql-common/client.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql-common/client.c b/sql-common/client.c index 3e5ceb1a738..c18c56e9c47 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -2451,6 +2451,7 @@ my_bool mysql_reconnect(MYSQL *mysql) } mysql_init(&tmp_mysql); tmp_mysql.options= mysql->options; + tmp_mysql.options.my_cnf_file= tmp_mysql.options.my_cnf_group= 0; tmp_mysql.rpl_pivot= mysql->rpl_pivot; if (!mysql_real_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd, |