Commit d33cb4a3 authored by unknown's avatar unknown

merged

parents ce31bdfb 745a9db3
...@@ -906,13 +906,20 @@ static int check_connection(THD *thd) ...@@ -906,13 +906,20 @@ static int check_connection(THD *thd)
*passwd++ : strlen(passwd); *passwd++ : strlen(passwd);
db= thd->client_capabilities & CLIENT_CONNECT_WITH_DB ? db= thd->client_capabilities & CLIENT_CONNECT_WITH_DB ?
db + passwd_len + 1 : 0; db + passwd_len + 1 : 0;
uint db_len= db ? strlen(db) : 0;
if (passwd + passwd_len + db_len > net->read_pos + pkt_len)
{
inc_host_errors(&thd->remote.sin_addr);
return ER_HANDSHAKE_ERROR;
}
/* Since 4.1 all database names are stored in utf8 */ /* Since 4.1 all database names are stored in utf8 */
if (db) if (db)
{ {
db_buff[copy_and_convert(db_buff, sizeof(db_buff)-1, db_buff[copy_and_convert(db_buff, sizeof(db_buff)-1,
system_charset_info, system_charset_info,
db, strlen(db), db, db_len,
thd->charset(), &dummy_errors)]= 0; thd->charset(), &dummy_errors)]= 0;
db= db_buff; db= db_buff;
} }
...@@ -1379,7 +1386,17 @@ bool dispatch_command(enum enum_server_command command, THD *thd, ...@@ -1379,7 +1386,17 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
{ {
char *db, *tbl_name; char *db, *tbl_name;
uint db_len= *(uchar*) packet; uint db_len= *(uchar*) packet;
if (db_len >= packet_length || db_len > NAME_LEN)
{
send_error(&thd->net, ER_UNKNOWN_COM_ERROR);
break;
}
uint tbl_len= *(uchar*) (packet + db_len + 1); uint tbl_len= *(uchar*) (packet + db_len + 1);
if (db_len+tbl_len+2 > packet_length || tbl_len > NAME_LEN)
{
send_error(&thd->net, ER_UNKNOWN_COM_ERROR);
break;
}
statistic_increment(com_other, &LOCK_status); statistic_increment(com_other, &LOCK_status);
thd->enable_slow_log= opt_log_slow_admin_statements; thd->enable_slow_log= opt_log_slow_admin_statements;
......
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