summaryrefslogtreecommitdiff
path: root/sql/sql_repl.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-04-18 22:17:29 +0200
committerSergei Golubchik <sergii@pisem.net>2013-04-18 22:17:29 +0200
commit84ce6832e64305a769fb424d272311468b5d1d0d (patch)
treed2a25ca91f63d312f0b2d09ccba012ecd102a7ba /sql/sql_repl.cc
parent07315d36030bd1cbe6acfeb3e8f60c49ba876a10 (diff)
downloadmariadb-git-84ce6832e64305a769fb424d272311468b5d1d0d.tar.gz
MDEV-4332 Increase username length from 16 characters
Diffstat (limited to 'sql/sql_repl.cc')
-rw-r--r--sql/sql_repl.cc16
1 files changed, 9 insertions, 7 deletions
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index d2f942643a9..b8a12b1ea8a 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -1555,14 +1555,15 @@ void kill_zombie_dump_threads(uint32 slave_server_id)
*/
static bool get_string_parameter(char *to, const char *from, size_t length,
- const char *name)
+ const char *name, CHARSET_INFO *cs)
{
if (from) // Empty paramaters allowed
{
- size_t from_length;
- if ((from_length= strlen(from)) > length)
+ size_t from_length= strlen(from);
+ uint from_numchars= cs->cset->numchars(cs, from, from + from_length);
+ if (from_numchars > length / cs->mbmaxlen)
{
- my_error(ER_WRONG_STRING_LENGTH, MYF(0), from, name, (int) length);
+ my_error(ER_WRONG_STRING_LENGTH, MYF(0), from, name, length / cs->mbmaxlen);
return 1;
}
memcpy(to, from, from_length+1);
@@ -1662,11 +1663,12 @@ bool change_master(THD* thd, Master_info* mi)
DBUG_PRINT("info", ("master_log_pos: %lu", (ulong) mi->master_log_pos));
if (get_string_parameter(mi->host, lex_mi->host, sizeof(mi->host)-1,
- "MASTER_HOST") ||
+ "MASTER_HOST", system_charset_info) ||
get_string_parameter(mi->user, lex_mi->user, sizeof(mi->user)-1,
- "MASTER_USER") ||
+ "MASTER_USER", system_charset_info) ||
get_string_parameter(mi->password, lex_mi->password,
- sizeof(mi->password)-1, "MASTER_PASSWORD"))
+ sizeof(mi->password)-1, "MASTER_PASSWORD",
+ &my_charset_bin))
{
ret= TRUE;
goto err;