Browse Source

Fix parsing of strings lists from implicit arrays

tags/1.1.0
Vsevolod Stakhov 8 years ago
parent
commit
0a334fa206
1 changed files with 11 additions and 6 deletions
  1. 11
    6
      src/libserver/cfg_rcl.c

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

@@ -2531,12 +2531,16 @@ rspamd_rcl_parse_struct_string_list (rspamd_mempool_t *pool,
const ucl_object_t *cur;
const gsize num_str_len = 32;
ucl_object_iter_t iter = NULL;
gboolean is_hash;
gboolean is_hash, need_destructor = TRUE;


is_hash = pd->flags & RSPAMD_CL_FLAG_STRING_LIST_HASH;
target = (gpointer *)(((gchar *)pd->user_struct) + pd->offset);

if (!is_hash && *target != NULL) {
need_destructor = FALSE;
}

iter = ucl_object_iterate_new (obj);

while ((cur = ucl_object_iterate_safe (iter, true)) != NULL) {
@@ -2586,13 +2590,14 @@ rspamd_rcl_parse_struct_string_list (rspamd_mempool_t *pool,
return FALSE;
}

/* Add a destructor */

if (!is_hash && *target != NULL) {
*target = g_list_reverse (*target);
rspamd_mempool_add_destructor (pool,
(rspamd_mempool_destruct_t) g_list_free,
*target);

if (need_destructor) {
rspamd_mempool_add_destructor (pool,
(rspamd_mempool_destruct_t) g_list_free,
*target);
}
}

return TRUE;

Loading…
Cancel
Save