From: Aki Tuomi Date: Tue, 17 Apr 2018 09:11:05 +0000 (+0300) Subject: auth: test - make sure memory gets free'd X-Git-Tag: 2.3.2.rc1~79 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c560ada9bfad6a3741b3a8d413bc6e9c0a36f6a2;p=thirdparty%2Fdovecot%2Fcore.git auth: test - make sure memory gets free'd --- diff --git a/src/auth/test-auth.h b/src/auth/test-auth.h index f4565c2a02..ef596e96bf 100644 --- a/src/auth/test-auth.h +++ b/src/auth/test-auth.h @@ -13,6 +13,8 @@ void test_db_dict_parse_cache_key(void); void test_username_filter(void); void test_db_lua(void); struct auth_passdb *passdb_mock(void); +void passdb_mock_mod_init(void); +void passdb_mock_mod_deinit(void); #endif diff --git a/src/auth/test-lua.c b/src/auth/test-lua.c index ab5b4f032b..79ab9eb7ad 100644 --- a/src/auth/test-lua.c +++ b/src/auth/test-lua.c @@ -13,7 +13,6 @@ static void test_db_lua_auth_verify(void) struct auth_settings set; i_zero(&set); global_auth_settings = &set; - passdbs_init(); struct auth_request *req = auth_request_new_dummy(); req->passdb = passdb_mock(); @@ -52,7 +51,6 @@ static void test_db_lua_auth_lookup(void) struct auth_settings set; i_zero(&set); global_auth_settings = &set; - passdbs_init(); struct auth_request *req = auth_request_new_dummy(); req->passdb = passdb_mock(); diff --git a/src/auth/test-main.c b/src/auth/test-main.c index 2275d19764..70025c1ccb 100644 --- a/src/auth/test-main.c +++ b/src/auth/test-main.c @@ -4,10 +4,12 @@ #include "test-common.h" #include "test-auth.h" #include "password-scheme.h" +#include "passdb.h" int main(int argc, const char *argv[]) { const char *match = ""; + int ret; static const struct named_test test_functions[] = { TEST_NAMED(test_auth_request_var_expand) TEST_NAMED(test_db_dict_parse_cache_key) @@ -19,9 +21,17 @@ int main(int argc, const char *argv[]) }; password_schemes_init(); + passdbs_init(); + passdb_mock_mod_init(); if (argc > 2 && strcasecmp(argv[1], "--match") == 0) match = argv[2]; - return test_run_named(test_functions, match); + ret = test_run_named(test_functions, match); + + passdb_mock_mod_deinit(); + password_schemes_deinit(); + passdbs_deinit(); + + return ret; } diff --git a/src/auth/test-mock.c b/src/auth/test-mock.c index 8834f7221c..16807d72a3 100644 --- a/src/auth/test-mock.c +++ b/src/auth/test-mock.c @@ -8,6 +8,7 @@ struct auth_penalty *auth_penalty; time_t process_start_time; bool worker, worker_restart_request; static struct passdb_module *mock_passdb_mod = NULL; +static pool_t mock_pool; void auth_module_load(const char *names ATTR_UNUSED) { @@ -52,11 +53,13 @@ static struct auth_passdb_settings set = { .auth_verbose = "default" }; -static void passdb_mock_mod_init(void) +void passdb_mock_mod_init(void) { if (mock_passdb_mod != NULL) return; + mock_pool = pool_allocfree_create("auth mock"); + passdb_register_module(&mock_interface); struct auth_passdb_settings set = { @@ -78,12 +81,19 @@ static void passdb_mock_mod_init(void) .master = FALSE, .auth_verbose = "default" }; - mock_passdb_mod = passdb_preinit(default_pool, &set); + mock_passdb_mod = passdb_preinit(mock_pool, &set); + passdb_init(mock_passdb_mod); +} + +void passdb_mock_mod_deinit(void) +{ + passdb_deinit(mock_passdb_mod); + passdb_unregister_module(&mock_interface); + pool_unref(&mock_pool); } struct auth_passdb *passdb_mock(void) { - passdb_mock_mod_init(); struct auth_passdb *ret = i_new(struct auth_passdb, 1); ret->set = &set; ret->passdb = mock_passdb_mod;