• Monty's avatar
    Added detection of memory overwrite with multi_malloc · 57c526ff
    Monty authored
    This patch also fixes some bugs detected by valgrind after this
    patch:
    
    - Not enough copy_func elements was allocated by Create_tmp_table() which
      causes an memory overwrite in Create_tmp_table::add_fields()
      I added an ASSERT() to be able to detect this also without valgrind.
      The bug was that TMP_TABLE_PARAM::copy_fields was not correctly set
      when calling create_tmp_table().
    - Aria::empty_bits is not allocated if there is no varchar/char/blob
      fields in the table.  Fixed code to take this into account.
      This cannot cause any issues as this is just a memory access
      into other Aria memory and the content of the memory would not be used.
    - Aria::last_key_buff was not allocated big enough. This may have caused
      issues with rtrees and ma_extra(HA_EXTRA_REMEMBER_POS) as they
      would use the same memory area.
    - Aria and MyISAM didn't take extended key parts into account, which
      caused problems when copying rec_per_key from engine to sql level.
    - Mark asan builds with 'asan' in version strihng to detect these in
      not_valgrind_build.inc.
      This is needed to not have main.sp-no-valgrind fail with asan.
    57c526ff
not_valgrind_build.inc 136 Bytes