From: Vsevolod Stakhov Date: Thu, 14 Jun 2018 16:26:22 +0000 (+0100) Subject: [Minor] Fix more init/deinit leaks X-Git-Tag: 1.7.6~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d168084c5a7830353786e466b484a9db7d36b6c6;p=thirdparty%2Frspamd.git [Minor] Fix more init/deinit leaks --- diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index ef5d89ff6c..cf7f8d847e 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -1913,6 +1913,8 @@ rspamd_config_radix_from_ucl (struct rspamd_config *cfg, ucl_object_key (obj)); return FALSE; } + + return TRUE; } else { /* Just a list */ @@ -1935,6 +1937,8 @@ rspamd_config_radix_from_ucl (struct rspamd_config *cfg, EINVAL, "bad map object for %s", ucl_object_key (obj)); return FALSE; } + + return TRUE; break; case UCL_ARRAY: /* List of IP addresses */ @@ -1961,6 +1965,11 @@ rspamd_config_radix_from_ucl (struct rspamd_config *cfg, } } + /* Destroy on cfg cleanup */ + rspamd_mempool_add_destructor (cfg->cfg_pool, + (rspamd_mempool_destruct_t)rspamd_map_helper_destroy_radix, + *target); + return TRUE; } diff --git a/src/libutil/addr.c b/src/libutil/addr.c index dee5fbbb28..a00d2a86b2 100644 --- a/src/libutil/addr.c +++ b/src/libutil/addr.c @@ -1752,9 +1752,7 @@ rspamd_inet_library_init (void) void rspamd_inet_library_destroy (void) { - if (local_addrs != NULL) { - rspamd_map_helper_destroy_radix (local_addrs); - } + /* Ugly: local_addrs will actually be freed by config object */ } gsize diff --git a/src/lua/lua_map.c b/src/lua/lua_map.c index d5914706ce..d3fc8edb9d 100644 --- a/src/lua/lua_map.c +++ b/src/lua/lua_map.c @@ -277,11 +277,13 @@ lua_config_radix_from_ucl (lua_State *L) msg_err_config ("invalid radix map static"); lua_pushnil (L); ucl_object_unref (fake_obj); + ucl_object_unref (obj); return 1; } ucl_object_unref (fake_obj); + ucl_object_unref (obj); pmap = lua_newuserdata (L, sizeof (void *)); map->map = m; m->lua_map = map;