mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Manual merge from mysql-trunk-merge.
Conflicts: - sql/sql_show.cc
This commit is contained in:
@@ -1659,6 +1659,28 @@ SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
|
|||||||
TEST_RESULT
|
TEST_RESULT
|
||||||
OK
|
OK
|
||||||
SET TIMESTAMP=DEFAULT;
|
SET TIMESTAMP=DEFAULT;
|
||||||
|
#
|
||||||
|
# Bug #50276: Security flaw in INFORMATION_SCHEMA.TABLES
|
||||||
|
#
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
USE db1;
|
||||||
|
CREATE TABLE t1 (id INT);
|
||||||
|
CREATE USER nonpriv;
|
||||||
|
USE test;
|
||||||
|
# connected as nonpriv
|
||||||
|
# Should return 0
|
||||||
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
USE INFORMATION_SCHEMA;
|
||||||
|
# Should return 0
|
||||||
|
SELECT COUNT(*) FROM TABLES WHERE TABLE_NAME='t1';
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
# connected as root
|
||||||
|
DROP USER nonpriv;
|
||||||
|
DROP TABLE db1.t1;
|
||||||
|
DROP DATABASE db1;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
create table information_schema.t1 (f1 INT);
|
create table information_schema.t1 (f1 INT);
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
@@ -1389,6 +1389,33 @@ SET TIMESTAMP=@@TIMESTAMP + 10000000;
|
|||||||
SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
|
SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
|
||||||
SET TIMESTAMP=DEFAULT;
|
SET TIMESTAMP=DEFAULT;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #50276: Security flaw in INFORMATION_SCHEMA.TABLES
|
||||||
|
--echo #
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
USE db1;
|
||||||
|
CREATE TABLE t1 (id INT);
|
||||||
|
CREATE USER nonpriv;
|
||||||
|
USE test;
|
||||||
|
|
||||||
|
connect (nonpriv_con, localhost, nonpriv,,);
|
||||||
|
connection nonpriv_con;
|
||||||
|
--echo # connected as nonpriv
|
||||||
|
--echo # Should return 0
|
||||||
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
|
||||||
|
USE INFORMATION_SCHEMA;
|
||||||
|
--echo # Should return 0
|
||||||
|
SELECT COUNT(*) FROM TABLES WHERE TABLE_NAME='t1';
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
--echo # connected as root
|
||||||
|
disconnect nonpriv_con;
|
||||||
|
DROP USER nonpriv;
|
||||||
|
DROP TABLE db1.t1;
|
||||||
|
DROP DATABASE db1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo End of 5.1 tests.
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -3317,11 +3317,11 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
while ((db_name= it++))
|
while ((db_name= it++))
|
||||||
{
|
{
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
if (!check_access(thd, SELECT_ACL, db_name->str,
|
if (!(check_access(thd, SELECT_ACL, db_name->str,
|
||||||
&thd->col_access, NULL, 0, 1) ||
|
&thd->col_access, NULL, 0, 1) ||
|
||||||
|
(!thd->col_access && check_grant_db(thd, db_name->str))) ||
|
||||||
sctx->master_access & (DB_ACLS | SHOW_DB_ACL) ||
|
sctx->master_access & (DB_ACLS | SHOW_DB_ACL) ||
|
||||||
acl_get(sctx->host, sctx->ip, sctx->priv_user, db_name->str, 0) ||
|
acl_get(sctx->host, sctx->ip, sctx->priv_user, db_name->str, 0))
|
||||||
!check_grant_db(thd, db_name->str))
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
thd->no_warnings_for_error= 1;
|
thd->no_warnings_for_error= 1;
|
||||||
|
Reference in New Issue
Block a user