• Joao Gramacho's avatar
    BUG#24365972 BINLOG DECODING ISN'T RESILIENT TO CORRUPT BINLOG FILES · 3fb2f8db
    Joao Gramacho authored
    Problem
    =======
    
    When facing decoding of corrupt binary log files, server may misbehave
    without detecting the events corruption.
    
    This patch makes MySQL server more resilient to binary log decoding.
    
    Fixes for events de-serialization and apply
    ===========================================
    
    @sql/log_event.cc
    
    Query_log_event::Query_log_event: added a check to ensure query length
    is respecting event buffer limits.
    
    Query_log_event::do_apply_event: extended a debug print, added a check
    to character set to determine if it is "parseable" or not, verified if
    database name is valid for system collation.
    
    Start_log_event_v3::do_apply_event: report an error on applying a
    non-supported binary log version.
    
    Load_log_event::copy_log_event: added a check to table_name length.
    
    User_var_log_event::User_var_log_event: added checks to avoid reading
    out of buffer limits.
    
    User_var_log_event::do_apply_event: reported an sanity check error
    properly and added individual sanity checks for variable types that
    expect fixed (or minimum) amount of bytes to be read.
    
    Rows_log_event::Rows_log_event: added checks to avoid reading out of
    buffer limits.
    
    @sql/log_event_old.cc
    
    Old_rows_log_event::Old_rows_log_event: added a sanity check to avoid
    reading out of buffer limits.
    
    @sql/sql_priv.h
    
    Added a sanity check to available_buffer() function.
    3fb2f8db
log_event.cc 341 KB