Browse Source

[Fix] Replace space like characters in headers with plain space

tags/1.7.0
Vsevolod Stakhov 6 years ago
parent
commit
d413a9fe65
3 changed files with 13 additions and 6 deletions
  1. 2
    2
      rules/regexp/headers.lua
  2. 8
    2
      src/libmime/mime_headers.c
  3. 3
    2
      src/libserver/re_cache.c

+ 2
- 2
rules/regexp/headers.lua View File

@@ -862,14 +862,14 @@ reconf['SUBJECT_HAS_EXCLAIM'] = {
}

reconf['SUBJECT_ENDS_QUESTION'] = {
re = 'Subject=/\\?\\s*$/H',
re = 'Subject=/\\?\\s*$/Hu',
description = 'Subject ends with a question',
score = 1.0,
group = 'headers'
}

reconf['SUBJECT_HAS_QUESTION'] = {
re = string.format('%s & !%s', 'Subject=/\\?/H', 'Subject=/\\?\\s*$/H'),
re = string.format('%s & !%s', 'Subject=/\\?/H', 'Subject=/\\?\\s*$/Hu'),
description = 'Subject contains a question',
score = 0.0,
group = 'headers'

+ 8
- 2
src/libmime/mime_headers.c View File

@@ -516,8 +516,14 @@ rspamd_mime_header_sanity_check (GString *str)

for (i = 0; i < str->len; i ++) {
t = str->str[i];
if (!((t & 0x80) || g_ascii_isgraph (t) || t == ' ')) {
str->str[i] = '?';
if (!((t & 0x80) || g_ascii_isgraph (t))) {
if (g_ascii_isspace (t)) {
/* Replace spaces characters with plain space */
str->str[i] = ' ';
}
else {
str->str[i] = '?';
}
}
}
}

+ 3
- 2
src/libserver/re_cache.c View File

@@ -809,9 +809,10 @@ rspamd_re_cache_exec_re (struct rspamd_task *task,

ret = rspamd_re_cache_process_regexp_data (rt, re,
task, scvec, lenvec, headerlist->len, raw);
msg_debug_re_task ("checking header %s regexp: %s -> %d",
msg_debug_re_task ("checking header %s regexp: %s=%*s -> %d",
re_class->type_data,
rspamd_regexp_get_pattern (re), ret);
rspamd_regexp_get_pattern (re),
(int)lenvec[0], scvec[0], ret);
g_free (scvec);
g_free (lenvec);
}

Loading…
Cancel
Save