• Sujatha's avatar
    MDEV-22317: SIGSEGV in my_free/delete_dynamic in optimized builds (ARIA) · 2e6b21be
    Sujatha authored
    Problem:
    =======
    SET @@GLOBAL.replicate_wild_ignore_table='';
    SET @@GLOBAL.replicate_wild_do_table='';
    
    Reports following valgrind error.
    
    Conditional jump or move depends on uninitialised value(s)
    Rpl_filter::set_wild_ignore_table(char const*) (rpl_filter.cc:439)
    
    Conditional jump or move depends on uninitialised value(s)
    at 0xF60390: delete_dynamic (array.c:304)
    by 0x74F3F2: Rpl_filter::set_wild_do_table(char const*) (rpl_filter.cc:421)
    
    Analysis:
    ========
    List of values provided for options "wild_do_table" and "wild_ignore_table" are
    stored in DYNAMIC_ARRAYS.  When an empty list is provided these dynamic arrays
    are not initialized.  Existing code treats empty element list as an error and
    tries to clean the uninitialized list. This results in above valgrind issue.
    
    Fix:
    ===
    The clean up should be initiated only when there is an error while parsing the
    'wild_do_table' or 'wild_ignore_table' list and the dynamic_array is in
    initialized state. Otherwise for empty list it should simply return success.
    2e6b21be
rpl_filter.cc 18.3 KB