diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-07-20 17:12:32 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-07-20 17:12:32 +0400 |
commit | 8dc9f3bed874f0944c4120fd9ec0c65eff0b2359 (patch) | |
tree | bdaef3ae47bc17dd0a06e4b532ceb77d77d2de4b | |
parent | 8e67a34fc8f36d529c2efc140e5a9da523da5af4 (diff) | |
download | rspamd-8dc9f3bed874f0944c4120fd9ec0c65eff0b2359.tar.gz rspamd-8dc9f3bed874f0944c4120fd9ec0c65eff0b2359.zip |
* Fix expanding spf macros that may fail in rare cases
-rw-r--r-- | src/plugins/lua/whitelist.lua | 2 | ||||
-rw-r--r-- | src/spf.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/plugins/lua/whitelist.lua b/src/plugins/lua/whitelist.lua index 34867bd2f..b1cab1aa1 100644 --- a/src/plugins/lua/whitelist.lua +++ b/src/plugins/lua/whitelist.lua @@ -50,7 +50,7 @@ if opts then end if symbol_from then if opts['from_whitelist'] then - h = rspamd_config:add_host_map (opts['from_whitelist']) + h = rspamd_config:add_hash_map (opts['from_whitelist']) else -- No whitelist defined symbol_from = nil @@ -630,6 +630,7 @@ expand_spf_macro (struct worker_task *task, struct spf_record *rec, char *begin) { char *p, *c, *new, *tmp; int len = 0, slen = 0, state = 0; + gboolean need_expand = FALSE; p = begin; /* Calculate length */ @@ -706,6 +707,7 @@ expand_spf_macro (struct worker_task *task, struct spf_record *rec, char *begin) /* Read modifier */ if (*p == '}') { state = 0; + need_expand = TRUE; } else if (*p != 'r' && !g_ascii_isdigit (*p)) { msg_info ("unknown or unsupported spf modifier %c in %s", *p, begin); @@ -717,7 +719,7 @@ expand_spf_macro (struct worker_task *task, struct spf_record *rec, char *begin) } } - if (slen == len) { + if (!need_expand) { /* No expansion needed */ return begin; } |