diff options
Diffstat (limited to 'fixes-1.5.9.diff')
-rw-r--r-- | fixes-1.5.9.diff | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/fixes-1.5.9.diff b/fixes-1.5.9.diff new file mode 100644 index 000000000000..7966b1caf609 --- /dev/null +++ b/fixes-1.5.9.diff @@ -0,0 +1,94 @@ +diff --git a/src/libserver/spf.c b/src/libserver/spf.c +index fdd4a5136..d985695fc 100644 +--- a/src/libserver/spf.c ++++ b/src/libserver/spf.c +@@ -1386,7 +1386,7 @@ reverse_spf_ip (gchar *ip, gint len) + } + + static const gchar * +-expand_spf_macro (struct spf_record *rec, ++expand_spf_macro (struct spf_record *rec, struct spf_resolved_element *resolved, + const gchar *begin) + { + const gchar *p; +@@ -1396,13 +1396,11 @@ expand_spf_macro (struct spf_record *rec, + gchar ip_buf[INET6_ADDRSTRLEN]; + gboolean need_expand = FALSE; + struct rspamd_task *task; +- struct spf_resolved_element *resolved; + + g_assert (rec != NULL); + g_assert (begin != NULL); + + task = rec->task; +- resolved = g_ptr_array_index (rec->resolved, rec->resolved->len - 1); + p = begin; + /* Calculate length */ + while (*p) { +@@ -1594,8 +1592,14 @@ expand_spf_macro (struct spf_record *rec, + c += len; + break; + case 'v': +- len = sizeof ("in-addr") - 1; +- memcpy (c, "in-addr", len); ++ if (rspamd_inet_address_get_af (task->from_addr) == AF_INET) { ++ len = sizeof ("in-addr") - 1; ++ memcpy (c, "in-addr", len); ++ } ++ else { ++ len = sizeof ("ip6") - 1; ++ memcpy (c, "ip6", len); ++ } + c += len; + break; + case 'h': +@@ -1606,6 +1610,11 @@ expand_spf_macro (struct spf_record *rec, + memcpy (c, tmp + 1, len); + c += len; + } ++ else { ++ len = strlen (task->helo); ++ memcpy (c, task->helo, len); ++ c += len; ++ } + } + break; + default: +@@ -1671,7 +1680,7 @@ parse_spf_record (struct spf_record *rec, struct spf_resolved_element *resolved, + } + + task = rec->task; +- begin = expand_spf_macro (rec, elt); ++ begin = expand_spf_macro (rec, resolved, elt); + addr = rspamd_spf_new_addr (rec, resolved, begin); + g_assert (addr != NULL); + t = g_ascii_tolower (addr->spf_string[0]); +diff --git a/src/plugins/fuzzy_check.c b/src/plugins/fuzzy_check.c +index 75f4091b8..f5471eee4 100644 +--- a/src/plugins/fuzzy_check.c ++++ b/src/plugins/fuzzy_check.c +@@ -944,7 +944,7 @@ fuzzy_check_module_config (struct rspamd_config *cfg) + fuzzy_module_ctx->text_multiplier = ucl_object_todouble (value); + } + else { +- fuzzy_module_ctx->text_multiplier = 0.5; ++ fuzzy_module_ctx->text_multiplier = 2.0; + } + + if ((value = +@@ -2319,11 +2319,12 @@ fuzzy_generate_commands (struct rspamd_task *task, struct fuzzy_rule *rule, + /* Check length of part */ + fac = fuzzy_module_ctx->text_multiplier * part->content->len; + if ((double)fuzzy_module_ctx->min_bytes > fac) { +- msg_info_task ("<%s>, part is shorter than %d bytes (%.0f * %.2f bytes), " ++ msg_info_task ("<%s>, part is shorter than %d bytes: %.0f " ++ "(%d * %.2f bytes), " + "skip fuzzy check", + task->message_id, fuzzy_module_ctx->min_bytes, fac, +- fuzzy_module_ctx->text_multiplier, +- part->content->len); ++ part->content->len, ++ fuzzy_module_ctx->text_multiplier); + continue; + } + |