mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 11:27:39 +02:00
fix problem
Error: Freeing unallocated data at line 900, 'sql_db.cc' ( DROP DATABASE frees thd->db for everything but thd->slave_thread=1 however we are not slave thread and more bugs could appear if we pretend to be, then we will be good boys and just strdup the value. If not DROP DATABASE then THD::~THD() will free the value. ) sql/event_timed.cc: fix problem Error: Freeing unallocated data at line 900, 'sql_db.cc' ( DROP DATABASE frees thd->db for everything but thd->slave_thread=1 however we are not slave thread and more bugs could appear if we pretend to be, then we will be good boys and just strdup the value. If not DROP DATABASE then THD::~THD() will free the value. ) - fix also a bad message
This commit is contained in:
parent
11c7dbd3a5
commit
d8bd689d2d
1 changed files with 8 additions and 5 deletions
|
|
@ -1156,7 +1156,12 @@ Event_timed::execute(THD *thd, MEM_ROOT *mem_root)
|
|||
goto done;
|
||||
/* Now we are sure we have valid this->sphead so we can copy the context */
|
||||
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;
|
||||
if (!check_access(thd, EVENT_ACL,dbname.str, 0, 0, 0,is_schema_db(dbname.str)))
|
||||
{
|
||||
|
|
@ -1173,7 +1178,6 @@ Event_timed::execute(THD *thd, MEM_ROOT *mem_root)
|
|||
restore_security_context(thd, save_ctx);
|
||||
DBUG_PRINT("info", ("master_access=%d db_access=%d",
|
||||
thd->security_ctx->master_access, thd->security_ctx->db_access));
|
||||
thd->db= 0;
|
||||
|
||||
VOID(pthread_mutex_lock(&this->LOCK_running));
|
||||
running= false;
|
||||
|
|
@ -1236,12 +1240,12 @@ Event_timed::change_security_context(THD *thd, Security_context *s_ctx,
|
|||
Event_timed::restore_security_context()
|
||||
thd - thread
|
||||
backup - switch to this context
|
||||
*/
|
||||
*/
|
||||
|
||||
void
|
||||
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
|
||||
if (backup)
|
||||
thd->security_ctx= backup;
|
||||
|
|
@ -1488,7 +1492,6 @@ Event_timed::spawn_thread_finish(THD *thd)
|
|||
0 - ok
|
||||
1 - not locked by this thread
|
||||
*/
|
||||
|
||||
|
||||
int
|
||||
Event_timed::spawn_unlock(THD *thd)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue