Clean up fix for Bug #7989 by avoiding extra memory copy, and adding some

more information to the error message.
This commit is contained in:
jimw@mysql.com 2005-02-18 12:47:33 -08:00
parent a6afab6a55
commit 5348bc99c1

View File

@ -202,18 +202,17 @@ my_bool acl_init(THD *org_thd, bool dont_read_acl_tables)
{ {
/* /*
We make a temporary copy of the database, force it to lower case, We make a temporary copy of the database, force it to lower case,
and then copy it back over the original name. We can't just update and then check it against the original name.
the host.db pointer, because tmp_name is allocated on the stack.
*/ */
(void)strmov(tmp_name, host.db); (void)strnmov(tmp_name, host.db, sizeof(tmp_name));
my_casedn_str(files_charset_info, tmp_name); my_casedn_str(files_charset_info, host.db);
if (strcmp(host.db, tmp_name) != 0) if (strcmp(host.db, tmp_name) != 0)
{ {
sql_print_warning("'host' entry '%s|%s' had database in mixed " sql_print_warning("'host' entry '%s|%s' had database in mixed "
"case that has been forced to lowercase because " "case that has been forced to lowercase because "
"lower_case_table_names is set.", "lower_case_table_names is set. It will not be "
"possible to remove this privilege using REVOKE.",
host.host.hostname, host.db); host.host.hostname, host.db);
(void)strmov(host.db, tmp_name);
} }
} }
host.access= get_access(table,2); host.access= get_access(table,2);
@ -403,18 +402,17 @@ my_bool acl_init(THD *org_thd, bool dont_read_acl_tables)
{ {
/* /*
We make a temporary copy of the database, force it to lower case, We make a temporary copy of the database, force it to lower case,
and then copy it back over the original name. We can't just update and then check it against the original name.
the db.db pointer, because tmp_name is allocated on the stack.
*/ */
(void)strmov(tmp_name, db.db); (void)strnmov(tmp_name, db.db, sizeof(tmp_name));
my_casedn_str(files_charset_info, tmp_name); my_casedn_str(files_charset_info, db.db);
if (strcmp(db.db, tmp_name) != 0) if (strcmp(db.db, tmp_name) != 0)
{ {
sql_print_warning("'db' entry '%s %s@%s' had database in mixed " sql_print_warning("'db' entry '%s %s@%s' had database in mixed "
"case that has been forced to lowercase because " "case that has been forced to lowercase because "
"lower_case_table_names is set.", "lower_case_table_names is set. It will not be "
"possible to remove this privilege using REVOKE.",
db.db, db.user, db.host.hostname, db.host.hostname); db.db, db.user, db.host.hostname, db.host.hostname);
(void)strmov(db.db, tmp_name);
} }
} }
db.sort=get_sort(3,db.host.hostname,db.db,db.user); db.sort=get_sort(3,db.host.hostname,db.db,db.user);