Commit da800fe5 authored by unknown's avatar unknown
Browse files

Merge msvensson@10.100.68.5:/home/msvensson/mysql/bug15598/my41-bug15598

into  devsrv-b.mysql.com:/space/magnus/my41-bug15598


sql/sql_acl.cc:
  Auto merged
parents f577d864 16257e8b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -464,3 +464,12 @@ show grants for root@localhost;
Grants for root@localhost
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
set names latin1;
insert into mysql.user (host, user) values ('', 'mysqltest_7');
flush privileges;
set password for mysqltest_7@ = password('systpass');
show grants for mysqltest_7@;
Grants for mysqltest_7@
GRANT USAGE ON *.* TO 'mysqltest_7'@'' IDENTIFIED BY PASSWORD '*2FB071A056F9BB745219D9C876814231DAF46517'
drop user mysqltest_7@;
show grants for mysqltest_7@;
ERROR 42000: There is no such grant defined for user 'mysqltest_7' on host ''
+12 −0
Original line number Diff line number Diff line
@@ -421,4 +421,16 @@ revoke all privileges on
show grants for root@localhost;
set names latin1;

#
# Bug #15598 Server crashes in specific case during setting new password
# - Caused by a user with host ''
#
insert into mysql.user (host, user) values ('', 'mysqltest_7');
flush privileges;
set password for mysqltest_7@ = password('systpass');
show grants for mysqltest_7@;
drop user mysqltest_7@;
--error 1141
show grants for mysqltest_7@;

# End of 4.1 tests
+3 −2
Original line number Diff line number Diff line
@@ -1371,7 +1371,8 @@ find_acl_user(const char *host, const char *user, my_bool exact)
	acl_user->user && !strcmp(user,acl_user->user))
    {
      if (exact ? !my_strcasecmp(&my_charset_latin1, host,
                                 acl_user->host.hostname) :
                                 acl_user->host.hostname ?
				 acl_user->host.hostname : "") :
          compare_hostname(&acl_user->host,host,host))
      {
	DBUG_RETURN(acl_user);
@@ -3605,7 +3606,7 @@ ACL_USER *check_acl_user(LEX_USER *user_name,
    if (!(user=acl_user->user))
      user= "";
    if (!(host=acl_user->host.hostname))
      host= "%";
      host= "";
    if (!strcmp(user_name->user.str,user) &&
	!my_strcasecmp(system_charset_info, user_name->host.str, host))
      break;