From 151c49bc213f27373138a7c8745cc2ff6fe27024 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 11 Nov 2016 23:15:56 -0500 Subject: [PATCH] Make sure test progams free all allocated memory This eliminates complaints from ASAN's memory leak detector. Signed-off-by: Theodore Ts'o --- lib/e2p/ostype.c | 1 + lib/ext2fs/csum.c | 1 + lib/ext2fs/inline_data.c | 1 + lib/ext2fs/tst_badblocks.c | 19 ++++++++++++++----- lib/ext2fs/tst_bitops.c | 8 +------- misc/base_device.c | 3 ++- 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/lib/e2p/ostype.c b/lib/e2p/ostype.c index d002e75..7f08844 100644 --- a/lib/e2p/ostype.c +++ b/lib/e2p/ostype.c @@ -66,6 +66,7 @@ int main(int argc, char **argv) s = e2p_os2string(i); os = e2p_string2os(s); printf("%d: %s (%d)\n", i, s, os); + free(s); if (i != os) { fprintf(stderr, "Failure!\n"); exit(1); diff --git a/lib/ext2fs/csum.c b/lib/ext2fs/csum.c index fcee07c..e67850f 100644 --- a/lib/ext2fs/csum.c +++ b/lib/ext2fs/csum.c @@ -1012,6 +1012,7 @@ int main(int argc, char **argv) printf("checksums for different data shouldn't match\n"); exit(1); } + ext2fs_free(fs); return 0; } diff --git a/lib/ext2fs/inline_data.c b/lib/ext2fs/inline_data.c index 587b88d..c8613f6 100644 --- a/lib/ext2fs/inline_data.c +++ b/lib/ext2fs/inline_data.c @@ -845,6 +845,7 @@ int main(int argc, char *argv[]) return 1; } printf("tst_inline_data(DIR): OK\n"); + ext2fs_free(fs); return 0; } diff --git a/lib/ext2fs/tst_badblocks.c b/lib/ext2fs/tst_badblocks.c index c685f33..b6e766a 100644 --- a/lib/ext2fs/tst_badblocks.c +++ b/lib/ext2fs/tst_badblocks.c @@ -201,6 +201,7 @@ int file_test(badblocks_list bb) printf("Block bitmap NOT matched.\n"); test_fail++; } + ext2fs_badblocks_list_free(new_bb); return 0; } @@ -215,7 +216,7 @@ static void invalid_proc(ext2_filsys fs, blk_t blk) } } -int file_test_invalid(badblocks_list bb) +void file_test_invalid(badblocks_list bb) { badblocks_list new_bb = 0; errcode_t retval; @@ -234,12 +235,14 @@ int file_test_invalid(badblocks_list bb) if (!f) { fprintf(stderr, "Error opening temp file: %s\n", error_message(errno)); - return 1; + test_fail++; + goto out; } retval = ext2fs_write_bb_FILE(bb, 0, f); if (retval) { com_err("file_test", retval, "while writing bad blocks"); - return 1; + test_fail++; + goto out; } fprintf(f, "34500\n"); @@ -248,7 +251,8 @@ int file_test_invalid(badblocks_list bb) retval = ext2fs_read_bb_FILE(fs, f, &new_bb, invalid_proc); if (retval) { com_err("file_test", retval, "while reading bad blocks"); - return 1; + test_fail++; + goto out; } fclose(f); if (!test_expected_fail) { @@ -263,7 +267,10 @@ int file_test_invalid(badblocks_list bb) printf("Block bitmap NOT matched.\n"); test_fail++; } - return 0; + ext2fs_badblocks_list_free(new_bb); +out: + free(fs->super); + free(fs); } int main(int argc, char **argv) @@ -354,6 +361,8 @@ int main(int argc, char **argv) ext2fs_badblocks_list_free(bb3); if (bb4) ext2fs_badblocks_list_free(bb4); + if (bb5) + ext2fs_badblocks_list_free(bb5); return test_fail; diff --git a/lib/ext2fs/tst_bitops.c b/lib/ext2fs/tst_bitops.c index ed71447..8262d3b 100644 --- a/lib/ext2fs/tst_bitops.c +++ b/lib/ext2fs/tst_bitops.c @@ -220,12 +220,6 @@ int main(int argc, char **argv) printf("64-bit: ext2fs_clear_bit test succeed.\n"); /* Do bigarray test */ - bigarray = malloc(1 << 29); - if (!bigarray) { - fprintf(stderr, "Failed to allocate scratch memory!\n"); - exit(1); - } - bigarray[BIG_TEST_BIT >> 3] = 0; ext2fs_set_bit64(BIG_TEST_BIT, bigarray); @@ -289,6 +283,6 @@ int main(int argc, char **argv) exit(1); printf("64-bit: ext2fs_fast_set_bit big_test successful\n"); - + free(bigarray); exit(0); } diff --git a/misc/base_device.c b/misc/base_device.c index b2ce138..d1c1cd9 100644 --- a/misc/base_device.c +++ b/misc/base_device.c @@ -150,7 +150,7 @@ errout: #ifdef DEBUG int main(int argc, char** argv) { - const char *base; + char *base; char buf[256], *cp; while (1) { @@ -164,6 +164,7 @@ int main(int argc, char** argv) *cp = 0; base = base_device(buf); printf("%s\t%s\n", buf, base ? base : "NONE"); + free(base); } exit(0); } -- 1.8.3.1