]> source.dussan.org Git - rspamd.git/commitdiff
Fix critical bug in host/port parsing.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 18 Aug 2014 14:24:47 +0000 (15:24 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 18 Aug 2014 14:24:47 +0000 (15:24 +0100)
src/libserver/cfg_utils.c
src/plugins/regexp.c

index abe47826e56e1146ad2eb973511972c76fe0bf69..7b981d1dce78cfcea0bd0d7de33e4f896fb3e9e1 100644 (file)
@@ -144,7 +144,7 @@ parse_host_port_priority_strv (rspamd_mempool_t *pool, gchar **tokens,
                cur_port = NULL;
        }
 
-       if ((r = getaddrinfo (cur_tok, cur_port, &hints, &res)) == 0) {
+       if ((r = getaddrinfo (tokens[0], cur_port, &hints, &res)) == 0) {
                memcpy (&addr_holder, res->ai_addr,
                        MIN (sizeof (addr_holder), res->ai_addrlen));
                if (res->ai_family == AF_INET) {
index 2bb7ebadab5a1dc06a874d0e8afa5d300c4575ee..3bab09f204ebc82a12e0abeebdb7e0e1d91d4beb 100644 (file)
@@ -1723,8 +1723,8 @@ static gboolean
 rspamd_check_smtp_data (struct rspamd_task *task, GList * args, void *unused)
 {
        struct expression_argument *arg;
-       GList *cur, *rcpt_list = NULL;
-       gchar *type, *what = NULL;
+       InternetAddressList *ia;
+       const gchar *type, *what = NULL;
 
        if (args == NULL) {
                msg_warn ("no parameters to function");
@@ -1743,7 +1743,7 @@ rspamd_check_smtp_data (struct rspamd_task *task, GList * args, void *unused)
                case 'f':
                case 'F':
                        if (g_ascii_strcasecmp (type, "from") == 0) {
-                               what = task->from;
+                               what = rspamd_task_get_sender (task);
                        }
                        else {
                                msg_warn ("bad argument to function: %s", type);
@@ -1783,7 +1783,7 @@ rspamd_check_smtp_data (struct rspamd_task *task, GList * args, void *unused)
                case 'r':
                case 'R':
                        if (g_ascii_strcasecmp (type, "rcpt") == 0) {
-                               rcpt_list = task->rcpt;
+                               ia = task->rcpt_mime;
                        }
                        else {
                                msg_warn ("bad argument to function: %s", type);
@@ -1796,7 +1796,7 @@ rspamd_check_smtp_data (struct rspamd_task *task, GList * args, void *unused)
                }
        }
 
-       if (what == NULL && rcpt_list == NULL) {
+       if (what == NULL && ia == NULL) {
                /* Not enough data so regexp would NOT be found anyway */
                return FALSE;
        }