commit ca03fc2: [Minor] Fix various static leaks

Vsevolod Stakhov vsevolod at highsecure.ru
Fri Sep 27 12:35:08 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-09-27 12:47:08 +0100
URL: https://github.com/rspamd/rspamd/commit/ca03fc2cc1d45800da06820eb55bb30d493a2aa8

[Minor] Fix various static leaks

---
 src/client/rspamc.c     | 2 ++
 src/libserver/cfg_rcl.c | 3 +++
 src/lua/lua_config.c    | 7 ++++++-
 src/lua/lua_util.c      | 1 -
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/client/rspamc.c b/src/client/rspamc.c
index 303669405..3f637cda0 100644
--- a/src/client/rspamc.c
+++ b/src/client/rspamc.c
@@ -411,6 +411,7 @@ read_cmd_line (gint *argc, gchar ***argv)
 	/* Parse options */
 	if (!g_option_context_parse (context, argc, argv, &error)) {
 		fprintf (stderr, "option parsing failed: %s\n", error->message);
+		g_option_context_free (context);
 		exit (EXIT_FAILURE);
 	}
 
@@ -418,6 +419,7 @@ read_cmd_line (gint *argc, gchar ***argv)
 		raw = TRUE;
 	}
 	/* Argc and argv are shifted after this function */
+	g_option_context_free (context);
 }
 
 static gboolean
diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c
index 04bd9eefc..b219e1af8 100644
--- a/src/libserver/cfg_rcl.c
+++ b/src/libserver/cfg_rcl.c
@@ -3932,6 +3932,9 @@ rspamd_config_read (struct rspamd_config *cfg,
 	}
 
 	cfg->lang_det = rspamd_language_detector_init (cfg);
+	rspamd_mempool_add_destructor (cfg->cfg_pool,
+			(rspamd_mempool_destruct_t)rspamd_language_detector_unref,
+			cfg->lang_det);
 
 	return TRUE;
 }
diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c
index 5c914af79..f047f1530 100644
--- a/src/lua/lua_config.c
+++ b/src/lua/lua_config.c
@@ -4157,7 +4157,12 @@ lua_config_init_subsystem (lua_State *L)
 				rspamd_init_filters (cfg, FALSE);
 			}
 			else if (strcmp (parts[i], "langdet") == 0) {
-				cfg->lang_det = rspamd_language_detector_init (cfg);
+				if (!cfg->lang_det) {
+					cfg->lang_det = rspamd_language_detector_init (cfg);
+					rspamd_mempool_add_destructor (cfg->cfg_pool,
+							(rspamd_mempool_destruct_t) rspamd_language_detector_unref,
+							cfg->lang_det);
+				}
 			}
 			else if (strcmp (parts[i], "stat") == 0) {
 				rspamd_stat_init (cfg, NULL);
diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c
index f86f975e7..026e6e822 100644
--- a/src/lua/lua_util.c
+++ b/src/lua/lua_util.c
@@ -822,7 +822,6 @@ lua_util_config_from_ucl (lua_State *L)
 		cfg->lua_state = L;
 
 		cfg->rcl_obj = obj;
-		cfg->cache = rspamd_symcache_new (cfg);
 		top = rspamd_rcl_config_init (cfg, NULL);
 
 		if (!rspamd_rcl_parse (top, cfg, cfg, cfg->cfg_pool, cfg->rcl_obj, &err)) {


More information about the Commits mailing list