malloc_usable_size: clean abort on invalid region

It's the region pointer that can be NULL here, and p was checked at the
beginning of the function. Also fix the test accordingly.
pull/132/head
Thibaut Sautereau 2021-02-10 09:25:55 +01:00 committed by Daniel Micay
parent 5c8b686370
commit 76860c72e1
2 changed files with 5 additions and 3 deletions

View File

@ -1630,7 +1630,7 @@ EXPORT size_t h_malloc_usable_size(H_MALLOC_USABLE_SIZE_CONST void *p) {
struct region_allocator *ra = ro.region_allocator; struct region_allocator *ra = ro.region_allocator;
mutex_lock(&ra->lock); mutex_lock(&ra->lock);
struct region_metadata *region = regions_find(p); struct region_metadata *region = regions_find(p);
if (p == NULL) { if (region == NULL) {
fatal_error("invalid malloc_usable_size"); fatal_error("invalid malloc_usable_size");
} }
size_t size = region->size; size_t size = region->size;

View File

@ -145,9 +145,11 @@ class TestSimpleMemoryCorruption(unittest.TestCase):
"fatal allocator error: invalid free\n") "fatal allocator error: invalid free\n")
def test_uninitialized_malloc_usable_size(self): def test_uninitialized_malloc_usable_size(self):
_stdout, _stderr, returncode = self.run_test( _stdout, stderr, returncode = self.run_test(
"uninitialized_malloc_usable_size") "uninitialized_malloc_usable_size")
self.assertEqual(returncode, -11) self.assertEqual(returncode, -6)
self.assertEqual(stderr.decode("utf-8"),
"fatal allocator error: invalid malloc_usable_size\n")
def test_uninitialized_realloc(self): def test_uninitialized_realloc(self):
_stdout, stderr, returncode = self.run_test("uninitialized_realloc") _stdout, stderr, returncode = self.run_test("uninitialized_realloc")