From dd1b49fbdbf49b16fbb16df44f307e62c122ba1b Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 14 Mar 2019 12:46:57 +0000 Subject: [PATCH] [Minor] Fix rspamc headers parsing --- src/client/rspamc.c | 19 ++++++++++++++++--- src/client/rspamdclient.h | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/client/rspamc.c b/src/client/rspamc.c index 927097e18..08a267f1b 100644 --- a/src/client/rspamc.c +++ b/src/client/rspamc.c @@ -74,8 +74,8 @@ static gint retcode = EXIT_SUCCESS; #define ADD_CLIENT_HEADER(o, n, v) do { \ struct rspamd_http_client_header *nh; \ nh = g_malloc (sizeof (*nh)); \ - nh->name = (n); \ - nh->value = (v); \ + nh->name = g_strdup (n); \ + nh->value = g_strdup (v); \ g_queue_push_tail ((o), nh); \ } while (0) @@ -645,6 +645,7 @@ add_options (GQueue *opts) numbuf = g_string_sized_new (8); rspamd_printf_gstring (numbuf, "%d", weight); ADD_CLIENT_HEADER (opts, "Weight", numbuf->str); + g_string_free (numbuf, TRUE); } if (fuzzy_symbol != NULL) { @@ -655,6 +656,7 @@ add_options (GQueue *opts) numbuf = g_string_sized_new (8); rspamd_printf_gstring (numbuf, "%d", flag); ADD_CLIENT_HEADER (opts, "Flag", numbuf->str); + g_string_free (numbuf, TRUE); } if (extended_urls) { @@ -1841,6 +1843,17 @@ rspamc_process_dir (struct event_base *ev_base, struct rspamc_command *cmd, event_base_loop (ev_base, 0); } + +static void +rspamc_kwattr_free (gpointer p) +{ + struct rspamd_http_client_header *h = (struct rspamd_http_client_header *)p; + + g_free (h->value); + g_free (h->name); + g_free (h); +} + gint main (gint argc, gchar **argv, gchar **env) { @@ -2005,7 +2018,7 @@ main (gint argc, gchar **argv, gchar **env) event_base_loop (ev_base, 0); - g_queue_free_full (kwattrs, g_free); + g_queue_free_full (kwattrs, rspamc_kwattr_free); /* Wait for children processes */ cur = children ? g_list_first (children) : NULL; diff --git a/src/client/rspamdclient.h b/src/client/rspamdclient.h index c2a3c1886..8a5b3de35 100644 --- a/src/client/rspamdclient.h +++ b/src/client/rspamdclient.h @@ -24,8 +24,8 @@ struct rspamd_client_connection; struct rspamd_http_message; struct rspamd_http_client_header { - const gchar *name; - const gchar *value; + gchar *name; + gchar *value; }; /** -- 2.39.5