From: Vsevolod Stakhov Date: Fri, 17 Apr 2015 10:47:42 +0000 (+0100) Subject: Parse comma separated lists in rspamd_rcl_parse_struct_string_list. X-Git-Tag: 0.9.0~223 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85cb173e351c97dc559f1319ad2fc5ec8efd3bbf;p=thirdparty%2Frspamd.git Parse comma separated lists in rspamd_rcl_parse_struct_string_list. --- diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 7b2bae7678..05ba79edac 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -1953,7 +1953,7 @@ rspamd_rcl_parse_struct_string_list (rspamd_mempool_t *pool, { struct rspamd_rcl_struct_parser *pd = ud; GList **target; - gchar *val; + gchar *val, **strvec, **cvec; const ucl_object_t *cur; const gsize num_str_len = 32; ucl_object_iter_t iter = NULL; @@ -1965,8 +1965,18 @@ rspamd_rcl_parse_struct_string_list (rspamd_mempool_t *pool, while ((cur = ucl_object_iterate_safe (iter, true)) != NULL) { switch (cur->type) { case UCL_STRING: - val = rspamd_mempool_strdup (pool, ucl_copy_value_trash (cur)); - break; + strvec = g_strsplit_set (ucl_object_tostring (cur), ",", -1); + cvec = strvec; + + while (*cvec) { + *target = g_list_prepend (*target, + rspamd_mempool_strdup (pool, *cvec)); + cvec ++; + } + + g_strfreev (strvec); + /* Go to the next object */ + continue; case UCL_INT: val = rspamd_mempool_alloc (pool, num_str_len); rspamd_snprintf (val, num_str_len, "%L", cur->value.iv);