From fc58ba6c76ef752e859146fefc9e6fbc564ab900 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 7 Oct 2014 11:55:39 +0200 Subject: [PATCH] MDEV-5553 A view or procedure with a non existing definer can block "SHOW TABLE STATUS" with an unclear error message Don't double-check privileges for a column in the GROUP BY that refers to the same column in SELECT clause. Privileges were already checked for SELECT clause. --- mysql-test/r/show_bad_definer-5553.result | 13 +++++++++++++ mysql-test/t/show_bad_definer-5553.test | 11 +++++++++++ sql/sql_select.cc | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 mysql-test/r/show_bad_definer-5553.result create mode 100644 mysql-test/t/show_bad_definer-5553.test diff --git a/mysql-test/r/show_bad_definer-5553.result b/mysql-test/r/show_bad_definer-5553.result new file mode 100644 index 00000000000..a1b8c6a7410 --- /dev/null +++ b/mysql-test/r/show_bad_definer-5553.result @@ -0,0 +1,13 @@ +create database mysqltest1; +use mysqltest1; +create table t1(id int primary key); +create definer=unknownuser@'%' sql security definer view v1 as select t1.id from t1 group by t1.id; +Warnings: +Note 1449 The user specified as a definer ('unknownuser'@'%') does not exist +show table status; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL +v1 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW +Warnings: +Note 1449 The user specified as a definer ('unknownuser'@'%') does not exist +drop database mysqltest1; diff --git a/mysql-test/t/show_bad_definer-5553.test b/mysql-test/t/show_bad_definer-5553.test new file mode 100644 index 00000000000..865408eadd7 --- /dev/null +++ b/mysql-test/t/show_bad_definer-5553.test @@ -0,0 +1,11 @@ +# +# MDEV-5553 A view or procedure with a non existing definer can block "SHOW TABLE STATUS" with an unclear error message +# + +create database mysqltest1; # all-open privileges on test db desroy the test +use mysqltest1; +create table t1(id int primary key); +create definer=unknownuser@'%' sql security definer view v1 as select t1.id from t1 group by t1.id; +--replace_column 8 # 12 # 13 # +show table status; +drop database mysqltest1; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index af2b489c8b6..3b960d457a7 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -20458,7 +20458,7 @@ find_order_in_list(THD *thd, Item **ref_pointer_array, TABLE_LIST *tables, order_item_type == Item::REF_ITEM) { from_field= find_field_in_tables(thd, (Item_ident*) order_item, tables, - NULL, &view_ref, IGNORE_ERRORS, TRUE, + NULL, &view_ref, IGNORE_ERRORS, FALSE, FALSE); if (!from_field) from_field= (Field*) not_found_field;