diff options
author | Sergei Golubchik <serg@mariadb.org> | 2019-11-04 18:30:48 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2019-11-04 23:14:27 +0100 |
commit | cd156e2c3e8576ee42ff470235d3af005daee274 (patch) | |
tree | af485bb26e2a74b047f6d72d15f3bef6bb9c7b77 /include/heap.h | |
parent | 9277b6ec1ce8bc195a10b5deb11d65843adf8972 (diff) | |
download | mariadb-git-cd156e2c3e8576ee42ff470235d3af005daee274.tar.gz |
MDEV-20971 ASAN heap-use-after-free in list_delete / heap_close
Don't save/restore HP_INFO as it could be changed by a concurrent thread.
different parts of HP_INFO are protected by different mutexes and
the mutex that protect most of the HP_INFO does not protect its open_list
data.
As a bonus, make heap_check_heap() to take const HP_INFO* and not
make any changes there whatsoever.
Diffstat (limited to 'include/heap.h')
-rw-r--r-- | include/heap.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/heap.h b/include/heap.h index 63d961b577a..014ec042671 100644 --- a/include/heap.h +++ b/include/heap.h @@ -245,7 +245,7 @@ int hp_panic(enum ha_panic_function flag); int heap_rkey(HP_INFO *info, uchar *record, int inx, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag); extern uchar * heap_find(HP_INFO *info,int inx,const uchar *key); -extern int heap_check_heap(HP_INFO *info, my_bool print_status); +extern int heap_check_heap(const HP_INFO *info, my_bool print_status); extern uchar *heap_position(HP_INFO *info); /* The following is for programs that uses the old HEAP interface where |