mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug fixes for 3.23.23
This commit is contained in:
@ -1170,9 +1170,8 @@ mysql_execute_command(void)
|
||||
#endif
|
||||
case SQLCOM_REPAIR:
|
||||
{
|
||||
if (!tables->db)
|
||||
tables->db=thd->db;
|
||||
if (check_table_access(thd,SELECT_ACL | INSERT_ACL, tables))
|
||||
if (check_db_used(thd,tables) ||
|
||||
check_table_access(thd,SELECT_ACL | INSERT_ACL, tables))
|
||||
goto error; /* purecov: inspected */
|
||||
res = mysql_repair_table(thd, tables, &lex->check_opt);
|
||||
break;
|
||||
@ -1695,6 +1694,10 @@ error:
|
||||
** Get the user (global) and database privileges for all used tables
|
||||
** Returns true (error) if we can't get the privileges and we don't use
|
||||
** table/column grants.
|
||||
** The idea of EXTRA_ACL is that one will be granted access to the table if
|
||||
** one has the asked privilege on any column combination of the table; For
|
||||
** example to be able to check a table one needs to have SELECT privilege on
|
||||
** any column of the table.
|
||||
****************************************************************************/
|
||||
|
||||
bool
|
||||
@ -1760,7 +1763,8 @@ check_table_access(THD *thd,uint want_access,TABLE_LIST *tables)
|
||||
TABLE_LIST *org_tables=tables;
|
||||
for (; tables ; tables=tables->next)
|
||||
{
|
||||
if ((thd->master_access & want_access) == want_access && thd->db)
|
||||
if ((thd->master_access & want_access) == (want_access & ~EXTRA_ACL) &&
|
||||
thd->db)
|
||||
tables->grant.privilege= want_access;
|
||||
else if (tables->db && tables->db == thd->db)
|
||||
{
|
||||
|
Reference in New Issue
Block a user