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;
|
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;
|
||||||
|
|
|
@ -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")
|
||||||
|
|
Loading…
Reference in New Issue