From 98385a7658b4c2cca37201d1fe2e39fb9dd7aa42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 12 Nov 2021 16:29:42 +0100 Subject: [PATCH] allocator_avl: return 0 for improper size_at call In case the given address is not the start of a block bail instead of making improper size assumptions. Issue #4325. --- repos/base/src/lib/base/allocator_avl.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/repos/base/src/lib/base/allocator_avl.cc b/repos/base/src/lib/base/allocator_avl.cc index 4c5b411390..8b487c1a9f 100644 --- a/repos/base/src/lib/base/allocator_avl.cc +++ b/repos/base/src/lib/base/allocator_avl.cc @@ -401,6 +401,9 @@ size_t Allocator_avl_base::size_at(void const *addr) const /* lookup corresponding block */ Block *b = _find_by_address(reinterpret_cast(addr)); + if (b && (b->addr() != (addr_t)addr)) + return 0; + return (b && b->used()) ? b->size() : 0; }