diff options
| author | Sascha Cunz <Sascha@BabbelBox.org> | 2012-11-23 11:41:56 +0100 |
|---|---|---|
| committer | Sascha Cunz <Sascha@BabbelBox.org> | 2012-11-23 11:41:56 +0100 |
| commit | 9094d30b932ca4b47dba81e76011efe05455a44a (patch) | |
| tree | 117c53e9ad194d00274ad98e784318bd960c4053 /tests-clar/object | |
| parent | 5cf1b4f094eb6f724b27aa01d4f0481de2e673af (diff) | |
| download | libgit2-9094d30b932ca4b47dba81e76011efe05455a44a.tar.gz | |
Reset all static variables to NULL in clar's __cleanup
Without this change, any failed assertion in the second (or a later) test
inside a test suite has a chance of double deleting memory, resulting in
a heap corruption. See #1096 for details.
This leaves alone the test cases where we "just" use cl_git_sandbox_init()
and cl_git_sandbox_cleanup(). These methods already take good care to not
double delete a repository.
Fixes #1096
Diffstat (limited to 'tests-clar/object')
| -rw-r--r-- | tests-clar/object/commit/commitstagedfile.c | 2 | ||||
| -rw-r--r-- | tests-clar/object/lookup.c | 3 | ||||
| -rw-r--r-- | tests-clar/object/peel.c | 1 | ||||
| -rw-r--r-- | tests-clar/object/tag/peel.c | 5 | ||||
| -rw-r--r-- | tests-clar/object/tree/frompath.c | 3 |
5 files changed, 13 insertions, 1 deletions
diff --git a/tests-clar/object/commit/commitstagedfile.c b/tests-clar/object/commit/commitstagedfile.c index eb78cedaa..6dc536e3a 100644 --- a/tests-clar/object/commit/commitstagedfile.c +++ b/tests-clar/object/commit/commitstagedfile.c @@ -13,6 +13,8 @@ void test_object_commit_commitstagedfile__initialize(void) void test_object_commit_commitstagedfile__cleanup(void) { git_repository_free(repo); + repo = NULL; + cl_fixture_cleanup("treebuilder"); } diff --git a/tests-clar/object/lookup.c b/tests-clar/object/lookup.c index 7cbcc6140..01435bc04 100644 --- a/tests-clar/object/lookup.c +++ b/tests-clar/object/lookup.c @@ -11,7 +11,8 @@ void test_object_lookup__initialize(void) void test_object_lookup__cleanup(void) { - git_repository_free(g_repo); + git_repository_free(g_repo); + g_repo = NULL; } void test_object_lookup__lookup_wrong_type_returns_enotfound(void) diff --git a/tests-clar/object/peel.c b/tests-clar/object/peel.c index f748be7f4..a19772858 100644 --- a/tests-clar/object/peel.c +++ b/tests-clar/object/peel.c @@ -10,6 +10,7 @@ void test_object_peel__initialize(void) void test_object_peel__cleanup(void) { git_repository_free(g_repo); + g_repo = NULL; } static void assert_peel( diff --git a/tests-clar/object/tag/peel.c b/tests-clar/object/tag/peel.c index 97c5a7dd3..e2cd8d6a8 100644 --- a/tests-clar/object/tag/peel.c +++ b/tests-clar/object/tag/peel.c @@ -14,8 +14,13 @@ void test_object_tag_peel__initialize(void) void test_object_tag_peel__cleanup(void) { git_tag_free(tag); + tag = NULL; + git_object_free(target); + target = NULL; + git_repository_free(repo); + repo = NULL; cl_fixture_cleanup("testrepo.git"); } diff --git a/tests-clar/object/tree/frompath.c b/tests-clar/object/tree/frompath.c index fd425517c..86ca47e94 100644 --- a/tests-clar/object/tree/frompath.c +++ b/tests-clar/object/tree/frompath.c @@ -19,7 +19,10 @@ void test_object_tree_frompath__initialize(void) void test_object_tree_frompath__cleanup(void) { git_tree_free(tree); + tree = NULL; + git_repository_free(repo); + repo = NULL; } static void assert_tree_from_path( |
