diff options
author | Sujatha Sivakumar <sujatha.sivakumar@mariadb.com> | 2019-03-27 12:34:03 +0530 |
---|---|---|
committer | Sujatha Sivakumar <sujatha.sivakumar@mariadb.com> | 2019-03-27 12:34:03 +0530 |
commit | f2d549d8dbda1906b3e5ae0c2fa5589f2b9de662 (patch) | |
tree | 2221a3ec1ebf2a09d823a28f03cc6119a9d9d7fa /sql/sp_head.cc | |
parent | e8907112790475772b3e5135b58ef95b3fd8ea68 (diff) | |
download | mariadb-git-f2d549d8dbda1906b3e5ae0c2fa5589f2b9de662.tar.gz |
MDEV-14784: Slave crashes in show_status_array upon running a trigger with
select from I_S
Problem:
========
When applier thread tries to access 'variable_name' of
INFORMATION_SCHEMA.SESSION_VARIABLES table through triggers, it results in an
abnormal exit of slave server.
Analysis:
========
At the time of replication of stored routines and triggers, their associated
security context will be sent by the master. The applier thread on the slave
server will use this information to set the required security context for the
execution of stored routines and triggers. This is achieved as follows.
->The stored routine object has a member named 'm_security_ctx' which holds the
security context received from master.
->The applier thread's security_ctx is stored into a 'backup' object.
->Set the applier thread's security_ctx to 'm_security_ctx'.
->Upon the completion of stored routine execution restore the original security
context of applier thread from the backup.
During the above process the 'm_security_ctx' object is not initialized
properly. Hence the 'external_user' of 'm_security_ctx' has invalid value for
this variable and accessing this variable results in abnormal exit of server.
Fix:
===
Invoke the Security_context::init() call from the constructor of stored routine
so that 'm_security_ctx' gets initialized properly.
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r-- | sql/sp_head.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 14a57914560..fec7f51eaf0 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -563,6 +563,7 @@ sp_head::sp_head() DBUG_ENTER("sp_head::sp_head"); + m_security_ctx.init(); m_backpatch.empty(); m_cont_backpatch.empty(); m_lex.empty(); |