Skip to content

Commit adeb736

Browse files
MDEV-22903 heap-use-after-free while accessing fts cache deleted doc ids
Problem: ======= fts_cache_append_deleted_doc_ids() holds the deleted_lock and tries to access size of deleted_doc_ids. In the meantime, fts_cache_clear() clears the sync_heap before clearing deleted_doc_ids. It leads to invalid access of deleted_doc_ids. Fix: === fts_cache_clear() should free the sync_heap after clearing deleted_doc_ids.
1 parent 52ccedd commit adeb736

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

storage/innobase/fts/fts0fts.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,14 +1127,14 @@ fts_cache_clear(
11271127
index_cache->doc_stats = NULL;
11281128
}
11291129

1130-
mem_heap_free(static_cast<mem_heap_t*>(cache->sync_heap->arg));
1131-
cache->sync_heap->arg = NULL;
1132-
11331130
cache->total_size = 0;
11341131

11351132
mutex_enter((ib_mutex_t*) &cache->deleted_lock);
11361133
cache->deleted_doc_ids = NULL;
11371134
mutex_exit((ib_mutex_t*) &cache->deleted_lock);
1135+
1136+
mem_heap_free(static_cast<mem_heap_t*>(cache->sync_heap->arg));
1137+
cache->sync_heap->arg = NULL;
11381138
}
11391139

11401140
/*********************************************************************//**

storage/xtradb/fts/fts0fts.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,14 +1127,14 @@ fts_cache_clear(
11271127
index_cache->doc_stats = NULL;
11281128
}
11291129

1130-
mem_heap_free(static_cast<mem_heap_t*>(cache->sync_heap->arg));
1131-
cache->sync_heap->arg = NULL;
1132-
11331130
cache->total_size = 0;
11341131

11351132
mutex_enter((ib_mutex_t*) &cache->deleted_lock);
11361133
cache->deleted_doc_ids = NULL;
11371134
mutex_exit((ib_mutex_t*) &cache->deleted_lock);
1135+
1136+
mem_heap_free(static_cast<mem_heap_t*>(cache->sync_heap->arg));
1137+
cache->sync_heap->arg = NULL;
11381138
}
11391139

11401140
/*********************************************************************//**

0 commit comments

Comments
 (0)