1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

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

more information to the error message.


sql/sql_acl.cc:
  Change strmov() call to strnmov(), and don't do redundant copy.
  Add to warning message that privilege can't be removed with REVOKE.
This commit is contained in:
unknown
2005-02-18 12:47:33 -08:00
parent 2d2d4df7d2
commit cfad792e74

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);