Commit f77bca69 authored by unknown's avatar unknown

Merge stella.local:/home2/mydev/mysql-5.0-axmrg

into  stella.local:/home2/mydev/mysql-5.1-axmrg


mysql-test/r/ctype_big5.result:
  Auto merged
mysql-test/r/ctype_euckr.result:
  Auto merged
mysql-test/r/ctype_gb2312.result:
  Auto merged
mysql-test/r/ctype_gbk.result:
  Auto merged
mysql-test/r/ctype_uca.result:
  Auto merged
mysql-test/r/ctype_ucs.result:
  Auto merged
mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result:
  Auto merged
mysql-test/t/ctype_ucs.test:
  Auto merged
sql/slave.cc:
  Auto merged
mysql-test/r/federated.result:
  Manual merge from 5.0
mysql-test/t/federated.test:
  Manual merge from 5.0
storage/federated/ha_federated.cc:
  Manual merge from 5.0
parents 03c110ea 7587a871
...@@ -2090,6 +2090,8 @@ a b ...@@ -2090,6 +2090,8 @@ a b
1 1 1 1
DROP TABLE t1; DROP TABLE t1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a INT) ENGINE=federated CONNECTION='mysql://@:://';
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests
DROP TABLE IF EXISTS federated.t1; DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated; DROP DATABASE IF EXISTS federated;
......
...@@ -1816,5 +1816,17 @@ DROP TABLE t1; ...@@ -1816,5 +1816,17 @@ DROP TABLE t1;
connection slave; connection slave;
DROP TABLE t1; DROP TABLE t1;
#
# BUG#34788 - malformed federated connection url is not handled correctly -
# crashes server !
#
# also tests
#
# BUG#35509 - Federated leaks memory when connecting to localhost/default
# port
#
CREATE TABLE t1 (a INT) ENGINE=federated CONNECTION='mysql://@:://';
DROP TABLE t1;
--echo End of 5.1 tests --echo End of 5.1 tests
source include/federated_cleanup.inc; source include/federated_cleanup.inc;
...@@ -794,9 +794,9 @@ static int parse_url(MEM_ROOT *mem_root, FEDERATED_SHARE *share, TABLE *table, ...@@ -794,9 +794,9 @@ static int parse_url(MEM_ROOT *mem_root, FEDERATED_SHARE *share, TABLE *table,
goto error; goto error;
/* /*
Found that if the string is: Found that if the string is:
user:@hostname:port/db/table user:@hostname:port/db/table
Then password is a null string, so set to NULL Then password is a null string, so set to NULL
*/ */
if ((share->password[0] == '\0')) if ((share->password[0] == '\0'))
share->password= NULL; share->password= NULL;
} }
...@@ -833,14 +833,21 @@ Then password is a null string, so set to NULL ...@@ -833,14 +833,21 @@ Then password is a null string, so set to NULL
if ((strchr(share->table_name, '/'))) if ((strchr(share->table_name, '/')))
goto error; goto error;
/*
If hostname is omitted, we set it to NULL. According to
mysql_real_connect() manual:
The value of host may be either a hostname or an IP address.
If host is NULL or the string "localhost", a connection to the
local host is assumed.
*/
if (share->hostname[0] == '\0') if (share->hostname[0] == '\0')
share->hostname= NULL; share->hostname= NULL;
} }
if (!share->port) if (!share->port)
{ {
if (strcmp(share->hostname, my_localhost) == 0) if (!share->hostname || strcmp(share->hostname, my_localhost) == 0)
share->socket= (char *) MYSQL_UNIX_ADDR; share->socket= (char*) MYSQL_UNIX_ADDR;
else else
share->port= MYSQL_PORT; share->port= MYSQL_PORT;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment