Fix for bug #13407 "Remote connecting crashes server" and couple of similar
problems which were introduced during work on WL#2787 "Add view definer/owner to the view definition (.frm) to check privileges on used tables and stored routines when using a VIEW." In some cases it is better to use value from Security_context::host_or_ip instead of value from Security_context::host since the latter can be NULL in certain situations (When we can't resolve hostname or we have not done this yet).
This commit is contained in:
parent
306dcf0620
commit
87dcb3c6f5
@ -5,3 +5,10 @@ GRANT USAGE ON *.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255'
|
||||
GRANT ALL PRIVILEGES ON `test`.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255'
|
||||
REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
|
||||
DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
|
||||
select user();
|
||||
user()
|
||||
#
|
||||
show processlist;
|
||||
Id User Host db Command Time State Info
|
||||
# root # test Sleep # NULL
|
||||
# root # test Query # NULL show processlist
|
||||
|
@ -8,3 +8,13 @@ REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
|
||||
DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
# Bug #13407 "Remote connecting crashes server".
|
||||
# Server crashed when one used USER() function in connection for which
|
||||
# was impossible to obtain peer hostname.
|
||||
connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, );
|
||||
--replace_column 1 #
|
||||
select user();
|
||||
--replace_column 1 # 6 # 3 #
|
||||
show processlist;
|
||||
connection default;
|
||||
|
@ -1608,7 +1608,7 @@ String *Item_func_user::val_str(String *str)
|
||||
else
|
||||
{
|
||||
user= thd->main_security_ctx.user;
|
||||
host= thd->main_security_ctx.host;
|
||||
host= thd->main_security_ctx.host_or_ip;
|
||||
}
|
||||
|
||||
// For system threads (e.g. replication SQL thread) user may be empty
|
||||
|
@ -4208,7 +4208,7 @@ pthread_handler_decl(handle_connections_shared_memory,arg)
|
||||
errmsg= 0;
|
||||
goto errorconn;
|
||||
}
|
||||
thd->host= my_strdup(my_localhost,MYF(0)); /* Host is unknown */
|
||||
thd->security_ctx->host= my_strdup(my_localhost, MYF(0)); /* Host is unknown */
|
||||
create_new_thread(thd);
|
||||
connect_number++;
|
||||
continue;
|
||||
|
@ -1205,7 +1205,7 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
|
||||
"%s:%u", tmp_sctx->host_or_ip, tmp->peer_port);
|
||||
}
|
||||
else
|
||||
thd_info->host= thd->strdup(tmp_sctx->host);
|
||||
thd_info->host= thd->strdup(tmp_sctx->host_or_ip);
|
||||
if ((thd_info->db=tmp->db)) // Safe test
|
||||
thd_info->db=thd->strdup(thd_info->db);
|
||||
thd_info->command=(int) tmp->command;
|
||||
|
Loading…
x
Reference in New Issue
Block a user