summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2019-11-04 18:30:48 +0100
committerSergei Golubchik <serg@mariadb.org>2019-11-04 23:14:27 +0100
commitcd156e2c3e8576ee42ff470235d3af005daee274 (patch)
treeaf485bb26e2a74b047f6d72d15f3bef6bb9c7b77 /include
parent9277b6ec1ce8bc195a10b5deb11d65843adf8972 (diff)
downloadmariadb-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')
-rw-r--r--include/heap.h2
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