Skip to content

Commit

Permalink
test: add regression test for missing init() in realloc()
Browse files Browse the repository at this point in the history
  • Loading branch information
cgzones committed Sep 27, 2023
1 parent 8696431 commit a1630db
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 1 deletion.
1 change: 1 addition & 0 deletions test/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,5 @@ overflow_small_1_byte
overflow_small_8_byte
uninitialized_read_large
uninitialized_read_small
realloc_init
__pycache__/
3 changes: 2 additions & 1 deletion test/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ EXECUTABLES := \
malloc_object_size_offset \
invalid_malloc_object_size_small \
invalid_malloc_object_size_small_quarantine \
impossibly_large_malloc
impossibly_large_malloc \
realloc_init

all: $(EXECUTABLES)

Expand Down
33 changes: 33 additions & 0 deletions test/realloc_init.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#include <pthread.h>
#include <stdlib.h>


static void* thread_func(void *arg) {
arg = realloc(arg, 1024);
if (!arg)
exit(EXIT_FAILURE);

free(arg);

return NULL;
}

int main(void) {
void *mem;
pthread_t thread;
int r;

mem = realloc(NULL, 12);
if (!mem)
return EXIT_FAILURE;

r = pthread_create(&thread, NULL, thread_func, mem);
if (r != 0)
return EXIT_FAILURE;

r = pthread_join(thread, NULL);
if (r != 0)
return EXIT_FAILURE;

return EXIT_SUCCESS;
}
5 changes: 5 additions & 0 deletions test/test_smc.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,11 @@ def test_uninitialized_read_large(self):
"uninitialized_read_large")
self.assertEqual(returncode, 0)

def test_realloc_init(self):
_stdout, stderr, returncode = self.run_test(
"realloc_init")
self.assertEqual(returncode, 0)


if __name__ == '__main__':
unittest.main()

0 comments on commit a1630db

Please sign in to comment.