diff options
author | unknown <kroki@mysql.com> | 2006-07-02 14:35:45 +0400 |
---|---|---|
committer | unknown <kroki@mysql.com> | 2006-07-02 14:35:45 +0400 |
commit | a2fc4843e38fcf12cacd526f1227cc0b30488bb5 (patch) | |
tree | 2c878e8f57af2a501208576c95d163f6b0d96de2 /sql/item_create.h | |
parent | 9b871930a9189cce16b39dc5576f3592a34959ba (diff) | |
download | mariadb-git-a2fc4843e38fcf12cacd526f1227cc0b30488bb5.tar.gz |
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.
Diffstat (limited to 'sql/item_create.h')
-rw-r--r-- | sql/item_create.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/sql/item_create.h b/sql/item_create.h index 35db9be3c89..cf61f90f91d 100644 --- a/sql/item_create.h +++ b/sql/item_create.h @@ -73,7 +73,6 @@ Item *create_func_period_add(Item* a, Item *b); Item *create_func_period_diff(Item* a, Item *b); Item *create_func_pi(void); Item *create_func_pow(Item* a, Item *b); -Item *create_func_current_user(void); Item *create_func_radians(Item *a); Item *create_func_release_lock(Item* a); Item *create_func_repeat(Item* a, Item *b); |