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
parent
5c8b686370
commit
76860c72e1
|
@ -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;
|
||||
mutex_lock(&ra->lock);
|
||||
struct region_metadata *region = regions_find(p);
|
||||
if (p == NULL) {
|
||||
if (region == NULL) {
|
||||
fatal_error("invalid malloc_usable_size");
|
||||
}
|
||||
size_t size = region->size;
|
||||
|
|
|
@ -145,9 +145,11 @@ class TestSimpleMemoryCorruption(unittest.TestCase):
|
|||
"fatal allocator error: invalid free\n")
|
||||
|
||||
def test_uninitialized_malloc_usable_size(self):
|
||||
_stdout, _stderr, returncode = self.run_test(
|
||||
_stdout, stderr, returncode = self.run_test(
|
||||
"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):
|
||||
_stdout, stderr, returncode = self.run_test("uninitialized_realloc")
|
||||
|
|
Loading…
Reference in New Issue