summaryrefslogtreecommitdiff
path: root/mysql-test/t/view_grant.test
diff options
context:
space:
mode:
authorMartin Hansson <mhansson@mysql.com>2008-09-09 12:49:08 +0200
committerMartin Hansson <mhansson@mysql.com>2008-09-09 12:49:08 +0200
commitc0cfce21d6cf6d1a1fbd8b080f91ed6a88b78329 (patch)
tree8b572114372452909352e1cc7a4595354d141e7b /mysql-test/t/view_grant.test
parent3bad2119f9dedc581bf3b9d7335740f563db5803 (diff)
downloadmariadb-git-c0cfce21d6cf6d1a1fbd8b080f91ed6a88b78329.tar.gz
Bug#35600: Security breach via view, I_S table and prepared
statement/stored procedure View privileges are properly checked after the fix for bug no 36086, so the method TABLE_LIST::get_db_name() must be used instead of field TABLE_LIST::db, as this only works for tables. Bug appears when accessing views in prepared statements. mysql-test/r/view_grant.result: Bug#35600: Extended existing test case. mysql-test/t/view_grant.test: Bug#35600: Extended existing test result. sql/sql_parse.cc: Bug#35600: Using method to retrieve database name instead of field.
Diffstat (limited to 'mysql-test/t/view_grant.test')
-rw-r--r--mysql-test/t/view_grant.test11
1 files changed, 10 insertions, 1 deletions
diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test
index afef5c5bc7b..4e8d97e4444 100644
--- a/mysql-test/t/view_grant.test
+++ b/mysql-test/t/view_grant.test
@@ -1265,8 +1265,11 @@ USE mysqltest1;
CREATE VIEW v1 AS SELECT * FROM information_schema.tables LIMIT 1;
CREATE ALGORITHM = TEMPTABLE VIEW v2 AS SELECT 1 AS A;
+CREATE VIEW test.v3 AS SELECT 1 AS a;
+
--connection default
GRANT SELECT ON mysqltest1.* to mysqluser1@localhost;
+GRANT ALL ON test.* TO mysqluser1@localhost;
--connect (connection1, localhost, mysqluser1, , test)
PREPARE stmt_v1 FROM "SELECT * FROM mysqltest1.v1";
@@ -1281,9 +1284,15 @@ REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost;
EXECUTE stmt_v1;
--error ER_TABLEACCESS_DENIED_ERROR
EXECUTE stmt_v2;
-
--disconnect connection1
+
+--connect (connection2, localhost, mysqluser1,,)
+PREPARE stmt FROM "SELECT a FROM v3";
+EXECUTE stmt;
+--disconnect connection2
+
--connection default
DROP VIEW v1, v2;
DROP DATABASE mysqltest1;
+DROP VIEW test.v3;
DROP USER mysqluser1@localhost;