]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix rspamc headers parsing
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 14 Mar 2019 12:46:57 +0000 (12:46 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 14 Mar 2019 12:46:57 +0000 (12:46 +0000)
src/client/rspamc.c
src/client/rspamdclient.h

index 927097e18dc768b47b76fd4d520ef34b2906ea36..08a267f1b841c2724a69cf291a747ff69e7282b8 100644 (file)
@@ -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;
index c2a3c1886e67b574f17f95a6a2264eeafe053288..8a5b3de358e649aa2898c463a65c5d956f509e8f 100644 (file)
@@ -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;
 };
 
 /**