Browse Source

[Fix] More leaks eliminated

tags/1.5.0
Vsevolod Stakhov 7 years ago
parent
commit
87be736a89
7 changed files with 35 additions and 14 deletions
  1. 6
    2
      src/libserver/cfg_rcl.c
  2. 7
    1
      src/libutil/addr.c
  3. 2
    0
      src/libutil/expression.c
  4. 10
    9
      src/libutil/map.c
  5. 7
    0
      src/lua/lua_map.c
  6. 1
    1
      src/plugins/fuzzy_check.c
  7. 2
    1
      src/rspamd.c

+ 6
- 2
src/libserver/cfg_rcl.c View File

@@ -1184,7 +1184,7 @@ rspamd_rcl_statfile_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
st->symbol = rspamd_mempool_strdup (cfg->cfg_pool, key);

if (rspamd_rcl_section_parse_defaults (cfg, section, pool, obj, st, err)) {
ccf->statfiles = g_list_prepend (ccf->statfiles, st);
ccf->statfiles = rspamd_mempool_glist_prepend (pool, ccf->statfiles, st);

if (st->label != NULL) {
labels = g_hash_table_lookup (ccf->labels, st->label);
@@ -1196,6 +1196,7 @@ rspamd_rcl_statfile_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
g_list_prepend (NULL, st));
}
}

if (st->symbol != NULL) {
g_hash_table_insert (cfg->classifiers_symbols, st->symbol, st);
}
@@ -1392,7 +1393,10 @@ rspamd_rcl_classifier_handler (rspamd_mempool_t *pool,
}

ref_idx = luaL_ref (L, LUA_REGISTRYINDEX);
ccf->learn_conditions = g_list_append (ccf->learn_conditions,
rspamd_lua_add_ref_dtor (L, cfg->cfg_pool, ref_idx);
ccf->learn_conditions = rspamd_mempool_glist_append (
cfg->cfg_pool,
ccf->learn_conditions,
GINT_TO_POINTER (ref_idx));
lua_settop (L, 0);
}

+ 7
- 1
src/libutil/addr.c View File

@@ -1020,7 +1020,13 @@ rspamd_resolve_addrs (const char *begin, size_t len, GPtrArray **addrs,
hints.ai_flags = AI_NUMERICSERV|flags;

if (len > 0) {
addr_cpy = g_malloc (len + 1);
if (pool) {
addr_cpy = rspamd_mempool_alloc (pool, len + 1);
}
else {
addr_cpy = g_malloc (len + 1);
}

rspamd_strlcpy (addr_cpy, begin, len + 1);
}
/* Otherwise it will be NULL */

+ 2
- 0
src/libutil/expression.c View File

@@ -379,6 +379,8 @@ rspamd_ast_add_node (GPtrArray *operands, struct rspamd_expression_elt *op,
if (a1 == NULL) {
g_set_error (err, rspamd_expr_quark(), EINVAL, "no operand to "
"unary '%s' operation", rspamd_expr_op_to_str (op->p.op));
g_node_destroy (res);

return FALSE;
}


+ 10
- 9
src/libutil/map.c View File

@@ -1603,7 +1603,8 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg,
g_ptr_array_add (map->backends, bk);

if (!map->name) {
map->name = g_strdup (ucl_object_tostring (cur));
map->name = rspamd_mempool_strdup (cfg->cfg_pool,
ucl_object_tostring (cur));
}
}
}
@@ -1621,16 +1622,14 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg,
else if (ucl_object_type (obj) == UCL_OBJECT) {
elt = ucl_object_lookup (obj, "name");
if (elt && ucl_object_type (elt) == UCL_STRING) {
map->name = g_strdup (ucl_object_tostring (elt));
map->name = rspamd_mempool_strdup (cfg->cfg_pool,
ucl_object_tostring (elt));
}

elt = ucl_object_lookup (obj, "description");
if (elt && ucl_object_type (elt) == UCL_STRING) {
if (map->description) {
g_free (map->description);
}

map->description = g_strdup (ucl_object_tostring (elt));
map->description = rspamd_mempool_strdup (cfg->cfg_pool,
ucl_object_tostring (elt));
}

elt = ucl_object_lookup_any (obj, "timeout", "poll", "poll_time",
@@ -1657,7 +1656,8 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg,
g_ptr_array_add (map->backends, bk);

if (!map->name) {
map->name = g_strdup (ucl_object_tostring (cur));
map->name = rspamd_mempool_strdup (cfg->cfg_pool,
ucl_object_tostring (cur));
}
}
}
@@ -1683,7 +1683,8 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg,
g_ptr_array_add (map->backends, bk);

if (!map->name) {
map->name = g_strdup (ucl_object_tostring (elt));
map->name = rspamd_mempool_strdup (cfg->cfg_pool,
ucl_object_tostring (elt));
}
}
}

+ 7
- 0
src/lua/lua_map.c View File

@@ -381,6 +381,9 @@ lua_config_add_map (lua_State *L)
&map_obj, &description, &cbidx, &type)) {
ret = luaL_error (L, "invalid table arguments: %s", err->message);
g_error_free (err);
if (map_obj) {
ucl_object_unref (map_obj);
}

return ret;
}
@@ -410,6 +413,10 @@ lua_config_add_map (lua_State *L)
luaL_unref (L, LUA_REGISTRYINDEX, cbidx);
}

if (map_obj) {
ucl_object_unref (map_obj);
}

lua_pushnil (L);

return 1;

+ 1
- 1
src/plugins/fuzzy_check.c View File

@@ -237,7 +237,7 @@ parse_mime_types (const gchar *str)
gchar **strvec, *p;
gint num, i;
struct fuzzy_mime_type *type;
GPtrArray *res = g_ptr_array_new ();
GPtrArray *res;

strvec = g_strsplit_set (str, ",", 0);
num = g_strv_length (strvec);

+ 2
- 1
src/rspamd.c View File

@@ -642,7 +642,7 @@ spawn_workers (struct rspamd_main *rspamd_main, struct event_base *ev_base)
}
}

g_ptr_array_free (seen_mandatory_workers);
g_ptr_array_free (seen_mandatory_workers, TRUE);
}

static void
@@ -1417,6 +1417,7 @@ main (gint argc, gchar **argv, gchar **env)
REF_RELEASE (rspamd_main->cfg);
g_hash_table_unref (rspamd_main->spairs);
rspamd_mempool_delete (rspamd_main->server_pool);
rspamd_pidfile_close (rspamd_main->pfh);
g_free (rspamd_main);
event_base_free (ev_base);


Loading…
Cancel
Save