mirror of
https://github.com/MariaDB/server.git
synced 2026-04-28 11:15:33 +02:00
Bug#20570: CURRENT_USER() in a VIEW with SQL SECURITY DEFINER returns
invoker name The bug was fixed similar to how context switch is handled in Item_func_sp::execute_impl(): we store pointer to current Name_resolution_context in Item_func_current_user class, and use its Security_context in Item_func_current_user::fix_fields(). mysql-test/r/view_grant.result: Add result for bug#20570. mysql-test/t/view_grant.test: Add test case for bug#20570. sql/item_create.cc: Remove create_func_current_user(), as it is not used for automatic function creation. sql/item_create.h: Remove prototype for create_func_current_user(). sql/item_strfunc.cc: Add implementations for Item_func_user::init(), Item_func_user::fix_fields() and Item_func_current_user::fix_fields() methods. The latter uses Security_context from current Name_resolution_context, if one is defined. sql/item_strfunc.h: Move implementation of CURRENT_USER() out of Item_func_user to to new Item_func_current_user class. For both classes calculate user name in fix_fields() method. For Item_func_current_user add context field to store Name_resolution_context in effect. sql/sql_yacc.yy: Pass current Name_resolution_context to Item_func_current_user.
This commit is contained in:
parent
9b871930a9
commit
a2fc4843e3
7 changed files with 184 additions and 45 deletions
|
|
@ -296,12 +296,6 @@ Item *create_func_pow(Item* a, Item *b)
|
|||
return new Item_func_pow(a,b);
|
||||
}
|
||||
|
||||
Item *create_func_current_user()
|
||||
{
|
||||
current_thd->lex->safe_to_cache_query= 0;
|
||||
return new Item_func_user(TRUE);
|
||||
}
|
||||
|
||||
Item *create_func_radians(Item *a)
|
||||
{
|
||||
return new Item_func_units((char*) "radians",a,M_PI/180,0.0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue