• unknown's avatar
    Bug#33618 (Crash in sp_rcontext) · 96dc5f05
    unknown authored
    Bug 33983 (Stored Procedures: wrong end <label> syntax is accepted)
    
    The server used to crash when REPEAT or another control instruction
    was used in conjunction with labels and a LEAVE instruction.
    
    The crash was caused by a missing "pop" of handlers or cursors in the
    code representing the stored program. When executing the code in a loop,
    this missing "pop" would result in a stack overflow, corrupting memory.
    
    Code generation has been fixed to produce the missing h_pop/c_pop
    instructions.
    
    Also, the logic checking that labels at the beginning and the end of a
    statement are matched was incorrect, causing Bug 33983.
    End labels, when used, must match the label used at the beginning of a block.
    
    
    mysql-test/r/sp-code.result:
      Bug#33618 (Crash in sp_rcontext)
    mysql-test/r/sp-error.result:
      Bug 33983 (Stored Procedures: wrong end <label> syntax is accepted)
    mysql-test/r/sp.result:
      Bug#33618 (Crash in sp_rcontext)
    mysql-test/t/sp-code.test:
      Bug#33618 (Crash in sp_rcontext)
    mysql-test/t/sp-error.test:
      Bug 33983 (Stored Procedures: wrong end <label> syntax is accepted)
    mysql-test/t/sp.test:
      Bug#33618 (Crash in sp_rcontext)
    sql/sp_head.cc:
      Bug#33618 (Crash in sp_rcontext)
    sql/sp_head.h:
      Bug#33618 (Crash in sp_rcontext)
    sql/sp_rcontext.cc:
      Bug#33618 (Crash in sp_rcontext)
    sql/sp_rcontext.h:
      Bug#33618 (Crash in sp_rcontext)
    sql/sql_yacc.yy:
      Bug#33618 (Crash in sp_rcontext)
    96dc5f05
sp_rcontext.cc 17 KB