diff options
author | Guillem Jover <guillem@hadrons.org> | 2020-08-16 22:01:42 +0200 |
---|---|---|
committer | Guillem Jover <guillem@hadrons.org> | 2020-12-21 17:44:26 +0100 |
commit | d5b04ab19cf2273becb0b95274964c02f8b26c66 (patch) | |
tree | 5a9e2a68d859727d4d2433c377ce41c84aeee03a | |
parent | cfeafeabad1d415e55afb0bdc0c7b2244b4bac10 (diff) |
test: Fix short lived memory leaks
These are non-issues, but having a clean ASAN test suite makes it
possible to detect actual problems in the tested code.
Warned-by: gcc ASAN
-rw-r--r-- | test/fgetln.c | 13 | ||||
-rw-r--r-- | test/setmode.c | 20 |
2 files changed, 27 insertions, 6 deletions
diff --git a/test/fgetln.c b/test/fgetln.c index 7d1e9dc..5e04281 100644 --- a/test/fgetln.c +++ b/test/fgetln.c @@ -61,6 +61,7 @@ static const wchar_t *data_wide[] = { struct file { FILE *fp; + void *line_alloc; const void **lines; const void *got_buf; @@ -97,6 +98,7 @@ test_fgetln_multi(void) str = strdup("A\n"); str[0] += i; + files[i].line_alloc = str; files[i].lines = reallocarray(NULL, LINE_COUNT, sizeof(char *)); files[i].lines[0] = str; files[i].lines[1] = str; @@ -123,8 +125,11 @@ test_fgetln_multi(void) } } - for (i = 0; i < LINE_COUNT; i++) + for (i = 0; i < FILE_COUNT; i++) { + free(files[i].line_alloc); + free(files[i].lines); pipe_close(files[i].fp); + } } static void @@ -159,6 +164,7 @@ test_fgetwln_multi(void) wstr = wcsdup(L"A\n"); wstr[0] += i; + files[i].line_alloc = wstr; files[i].lines = reallocarray(NULL, LINE_COUNT, sizeof(char *)); files[i].lines[0] = wstr; files[i].lines[1] = wstr; @@ -185,8 +191,11 @@ test_fgetwln_multi(void) } } - for (i = 0; i < LINE_COUNT; i++) + for (i = 0; i < FILE_COUNT; i++) { + free(files[i].line_alloc); + free(files[i].lines); pipe_close(files[i].fp); + } } static void diff --git a/test/setmode.c b/test/setmode.c index c6fbcba..c72deb8 100644 --- a/test/setmode.c +++ b/test/setmode.c @@ -25,19 +25,31 @@ */ #include <assert.h> +#include <stdlib.h> #include <unistd.h> int main(int argc, char **argv) { + void *set; + umask(0); - assert(getmode(setmode("0"), 0) == 0); + set = setmode("0"); + assert(getmode(set, 0) == 0); + free(set); + + set = setmode("7777"); + assert(getmode(set, 0) == 07777); + free(set); - assert(getmode(setmode("7777"), 0) == 07777); - assert(getmode(setmode("1555"), 0) == 01555); + set = setmode("1555"); + assert(getmode(set, 0) == 01555); + free(set); - assert(getmode(setmode("ugo=rwx"), 0) == 0777); + set = setmode("ugo=rwx"); + assert(getmode(set, 0) == 0777); + free(set); /* FIXME: Complete unit tests. */ |