diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-03-29 11:33:25 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-03-29 11:33:25 +0100 |
commit | 0643d1f3191a387cf99e7c505dde7b829ce2b03d (patch) | |
tree | b2ac2af19b6f7c90feb0299b1df57ea81ebbdc6c /sql/sql_acl.cc | |
parent | 73f48615754833e637ba05d2a0d92a0ea5c2d5cf (diff) | |
download | mariadb-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.cc | 12 |
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; /* |