• Marko Mäkelä's avatar
    MDEV-33325 Crash in flst_read_addr on corrupted data · 263932d5
    Marko Mäkelä authored
    flst_read_addr(): Remove assertions. Instead, we will check these
    conditions in the callers and avoid a crash in case of corruption.
    We will check the conditions more carefully, because the callers
    know more exact bounds for the page numbers and the byte offsets
    withing pages.
    
    flst_remove(), flst_add_first(), flst_add_last(): Add a parameter
    for passing fil_space_t::free_limit. None of the lists may point to
    pages that are beyond the current initialized length of the
    tablespace.
    
    trx_rseg_mem_restore(): Access the first page of the tablespace,
    so that we will correctly recover rseg->space->free_limit
    in case some log based recovery is pending.
    
    ibuf_remove_free_page(): Only look up the root page once, and
    validate the last page number.
    
    Reviewed by: Debarun Banerjee
    263932d5
trx0undo.cc 49 KB