mirror of
https://github.com/GrapheneOS/hardened_malloc.git
synced 2025-05-25 01:11:21 -04:00
test: add tests for zero sized realloc(3)
C23 declared calling realloc(3) with a non-NULL pointer and zero size Undefined behavior. Check that hardened_malloc handles that case sanely by free'ing the old pointer and returning a special pointer, like `malloc(3)` called with size zero.
This commit is contained in:
parent
1d7fc7ffe0
commit
9ca3279507
6 changed files with 80 additions and 1 deletions
|
@ -169,6 +169,20 @@ class TestSimpleMemoryCorruption(unittest.TestCase):
|
|||
self.assertEqual(stderr.decode("utf-8"),
|
||||
"fatal allocator error: invalid realloc\n")
|
||||
|
||||
def test_realloc_c23_undefined_behaviour(self):
|
||||
_stdout, stderr, returncode = self.run_test("realloc_c23_undefined_behaviour")
|
||||
self.assertEqual(returncode, 0)
|
||||
|
||||
def test_realloc_c23_undefined_behaviour_double_free(self):
|
||||
_stdout, stderr, returncode = self.run_test("realloc_c23_undefined_behaviour_double_free")
|
||||
self.assertEqual(returncode, -6)
|
||||
self.assertEqual(stderr.decode("utf-8"),
|
||||
"fatal allocator error: double free (quarantine)\n")
|
||||
|
||||
def test_realloc_c23_undefined_behaviour_use_after_free(self):
|
||||
_stdout, stderr, returncode = self.run_test("realloc_c23_undefined_behaviour_use_after_free")
|
||||
self.assertEqual(returncode, -11)
|
||||
|
||||
def test_write_after_free_large_reuse(self):
|
||||
_stdout, _stderr, returncode = self.run_test(
|
||||
"write_after_free_large_reuse")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue