From 65c2e0045f2decf3b565ebedae07560cb097e0e5 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Mon, 10 Jun 2013 10:23:44 +0200 Subject: Fix dereference after a NULL check in tests. https://fedorahosted.org/sssd/ticket/1972 Coverity IDs: 11870,11871 Do not call unlink with NULL pointer. --- src/tests/common_dom.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/tests/common_dom.c b/src/tests/common_dom.c index 661271d3b..9edb237e7 100644 --- a/src/tests/common_dom.c +++ b/src/tests/common_dom.c @@ -132,12 +132,19 @@ void test_dom_suite_cleanup(const char *tests_path, errno_t ret; char *conf_db; char *sys_db; + TALLOC_CTX *tmp_ctx; - conf_db = talloc_asprintf(NULL, "%s/%s", tests_path, confdb_path); - sys_db = talloc_asprintf(NULL, "%s/%s", tests_path, sysdb_path); - if (!conf_db || !sys_db) { + tmp_ctx = talloc_new(NULL); + if (!tmp_ctx) { + DEBUG(SSSDBG_CRIT_FAILURE, ("talloc_new failed\n")); + return; + } + + conf_db = talloc_asprintf(tmp_ctx, "%s/%s", tests_path, confdb_path); + if (!conf_db) { DEBUG(SSSDBG_CRIT_FAILURE, - ("Could not construct db paths\n")); + ("Could not construct conf_db path\n")); + goto done; } errno = 0; @@ -148,6 +155,13 @@ void test_dom_suite_cleanup(const char *tests_path, errno, strerror(errno))); } + sys_db = talloc_asprintf(tmp_ctx, "%s/%s", tests_path, sysdb_path); + if (!sys_db) { + DEBUG(SSSDBG_CRIT_FAILURE, + ("Could not construct sys_db path\n")); + goto done; + } + errno = 0; ret = unlink(sys_db); if (ret != 0 && errno != ENOENT) { @@ -164,6 +178,6 @@ void test_dom_suite_cleanup(const char *tests_path, errno, strerror(errno))); } - talloc_free(conf_db); - talloc_free(sys_db); +done: + talloc_free(tmp_ctx); } -- cgit