From: Vsevolod Stakhov Date: Mon, 18 Aug 2014 14:24:47 +0000 (+0100) Subject: Fix critical bug in host/port parsing. X-Git-Tag: 0.7.0~153 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=87be6ee96d2850a54d5d2a7dcf2b107e9d9f06af;p=thirdparty%2Frspamd.git Fix critical bug in host/port parsing. --- diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index abe47826e5..7b981d1dce 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -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) { diff --git a/src/plugins/regexp.c b/src/plugins/regexp.c index 2bb7ebadab..3bab09f204 100644 --- a/src/plugins/regexp.c +++ b/src/plugins/regexp.c @@ -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; }