summaryrefslogtreecommitdiff
path: root/sql/sql_acl.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-03-29 11:33:25 +0100
committerSergei Golubchik <sergii@pisem.net>2014-03-29 11:33:25 +0100
commit0643d1f3191a387cf99e7c505dde7b829ce2b03d (patch)
treeb2ac2af19b6f7c90feb0299b1df57ea81ebbdc6c /sql/sql_acl.cc
parent73f48615754833e637ba05d2a0d92a0ea5c2d5cf (diff)
downloadmariadb-git-0643d1f3191a387cf99e7c505dde7b829ce2b03d.tar.gz
another post-fix patch for MDEV-5850: MySQL Bug#21317: SHOW CREATE DATABASE does not obey to lower_case_table_names
(for case-insensitive filesystems) sql/events.cc: for "SHOW EVENTS IN db_name" sql/sp_head.h: for "CREATE EVENT", and everything SP-related sql/sql_acl.cc: privilege check for mysql_change_db() sql/sql_db.cc: for metadata locking of db names sql/sql_parse.cc: any_db is a constant, it is not writable sql/sql_show.cc: for SHOW CREATE TRIGGER and other trigger-related statements
Diffstat (limited to 'sql/sql_acl.cc')
-rw-r--r--sql/sql_acl.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 4b139405671..130113c17f1 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -7118,16 +7118,22 @@ bool check_grant_db(THD *thd, const char *db)
{
Security_context *sctx= thd->security_ctx;
char helping [SAFE_NAME_LEN + USERNAME_LENGTH+2], *end;
- char helping2 [SAFE_NAME_LEN + USERNAME_LENGTH+2];
+ char helping2 [SAFE_NAME_LEN + USERNAME_LENGTH+2], *tmp_db;
uint len, UNINIT_VAR(len2);
bool error= TRUE;
- end= strmov(helping, sctx->priv_user) + 1;
- end= strnmov(end, db, helping + sizeof(helping) - end);
+ tmp_db= strmov(helping, sctx->priv_user) + 1;
+ end= strnmov(tmp_db, db, helping + sizeof(helping) - tmp_db);
if (end >= helping + sizeof(helping)) // db name was truncated
return 1; // no privileges for an invalid db name
+ if (lower_case_table_names)
+ {
+ end = tmp_db + my_casedn_str(files_charset_info, tmp_db);
+ db=tmp_db;
+ }
+
len= (uint) (end - helping) + 1;
/*