Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into lmy004.:/work/mysql-5.1-bug16406
This commit is contained in:
unknown 2006-03-02 18:48:25 +01:00
commit af1f9939d9

View file

@ -1156,7 +1156,12 @@ Event_timed::execute(THD *thd, MEM_ROOT *mem_root)
goto done; goto done;
/* Now we are sure we have valid this->sphead so we can copy the context */ /* Now we are sure we have valid this->sphead so we can copy the context */
sphead->m_security_ctx= security_ctx; sphead->m_security_ctx= security_ctx;
thd->db= dbname.str; /*
THD::~THD will clean this or if there is DROP DATABASE in the SP then
it will be free there. It should not point to our buffer which is allocated
on a mem_root.
*/
thd->db= my_strdup(dbname.str, MYF(0));
thd->db_length= dbname.length; thd->db_length= dbname.length;
if (!check_access(thd, EVENT_ACL,dbname.str, 0, 0, 0,is_schema_db(dbname.str))) if (!check_access(thd, EVENT_ACL,dbname.str, 0, 0, 0,is_schema_db(dbname.str)))
{ {
@ -1175,7 +1180,6 @@ Event_timed::execute(THD *thd, MEM_ROOT *mem_root)
restore_security_context(thd, save_ctx); restore_security_context(thd, save_ctx);
DBUG_PRINT("info", ("master_access=%d db_access=%d", DBUG_PRINT("info", ("master_access=%d db_access=%d",
thd->security_ctx->master_access, thd->security_ctx->db_access)); thd->security_ctx->master_access, thd->security_ctx->db_access));
thd->db= 0;
VOID(pthread_mutex_lock(&this->LOCK_running)); VOID(pthread_mutex_lock(&this->LOCK_running));
running= false; running= false;
@ -1243,7 +1247,7 @@ Event_timed::change_security_context(THD *thd, Security_context *s_ctx,
void void
Event_timed::restore_security_context(THD *thd, Security_context *backup) Event_timed::restore_security_context(THD *thd, Security_context *backup)
{ {
DBUG_ENTER("Event_timed::change_security_context"); DBUG_ENTER("Event_timed::restore_security_context");
#ifndef NO_EMBEDDED_ACCESS_CHECKS #ifndef NO_EMBEDDED_ACCESS_CHECKS
if (backup) if (backup)
thd->security_ctx= backup; thd->security_ctx= backup;
@ -1491,7 +1495,6 @@ Event_timed::spawn_thread_finish(THD *thd)
1 - not locked by this thread 1 - not locked by this thread
*/ */
int int
Event_timed::spawn_unlock(THD *thd) Event_timed::spawn_unlock(THD *thd)
{ {