From 5348bc99c1001d60cc732e0e3c6623c501599aee Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Fri, 18 Feb 2005 12:47:33 -0800 Subject: [PATCH] Clean up fix for Bug #7989 by avoiding extra memory copy, and adding some more information to the error message. --- sql/sql_acl.cc | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 92d6f471a1e..252a2af7134 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -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, - and then copy it back over the original name. We can't just update - the host.db pointer, because tmp_name is allocated on the stack. + and then check it against the original name. */ - (void)strmov(tmp_name, host.db); - my_casedn_str(files_charset_info, tmp_name); + (void)strnmov(tmp_name, host.db, sizeof(tmp_name)); + my_casedn_str(files_charset_info, host.db); if (strcmp(host.db, tmp_name) != 0) { sql_print_warning("'host' entry '%s|%s' had database in mixed " "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); - (void)strmov(host.db, tmp_name); } } 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, - and then copy it back over the original name. We can't just update - the db.db pointer, because tmp_name is allocated on the stack. + and then check it against the original name. */ - (void)strmov(tmp_name, db.db); - my_casedn_str(files_charset_info, tmp_name); + (void)strnmov(tmp_name, db.db, sizeof(tmp_name)); + my_casedn_str(files_charset_info, db.db); if (strcmp(db.db, tmp_name) != 0) { sql_print_warning("'db' entry '%s %s@%s' had database in mixed " "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); - (void)strmov(db.db, tmp_name); } } db.sort=get_sort(3,db.host.hostname,db.db,db.user);