From 2f1389233e1eefbecf7703177b6f28248fcedc87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Wed, 13 Dec 2023 21:53:16 +0100 Subject: [PATCH] MemBlockInfo: Fix potential out-of-bounds in the slab map, reported by Nemoumbra --- Core/Debugger/MemBlockInfo.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Core/Debugger/MemBlockInfo.cpp b/Core/Debugger/MemBlockInfo.cpp index f727d3a484..0f6be382bf 100644 --- a/Core/Debugger/MemBlockInfo.cpp +++ b/Core/Debugger/MemBlockInfo.cpp @@ -288,7 +288,12 @@ void MemSlabMap::Clear() { MemSlabMap::Slab *MemSlabMap::FindSlab(uint32_t addr) { // Jump ahead using our index. - Slab *slab = heads_[addr / SLICE_SIZE]; + size_t slabIndex = addr / SLICE_SIZE; + if (slabIndex >= heads_.size()) { + // Shouldn't happen, but apparently can. + return nullptr; + } + Slab *slab = heads_[slabIndex]; // We often move forward, so check the last find. if (lastFind_->start > slab->start && lastFind_->start <= addr) slab = lastFind_;