Browse Source

[Minor] Restore compatible behaviour for incomplete received headers

tags/3.1
Vsevolod Stakhov 2 years ago
parent
commit
8a4c1dc178
1 changed files with 18 additions and 14 deletions
  1. 18
    14
      src/libmime/received.cxx

+ 18
- 14
src/libmime/received.cxx View File



auto len = end - p; auto len = end - p;


/* Ignore all received but those started from from part */
if (len <= 4 || !lit_compare_lowercase<4>("from", p)) {
return {};
}

p += sizeof("from") - 1;

auto maybe_process_part = [&](received_part_type what) -> bool { auto maybe_process_part = [&](received_part_type what) -> bool {
parts.emplace_back(what); parts.emplace_back(what);
auto &rcvd_part = parts.back(); auto &rcvd_part = parts.back();
return true; return true;
}; };


/* We can now store from part */
if (!maybe_process_part(received_part_type::RSPAMD_RECEIVED_PART_FROM)) {
return {};
}
if (len > 4 && lit_compare_lowercase<4>("from", p)) {
p += sizeof("from") - 1;


g_assert (pos != 0);
p += pos;
len = end > p ? end - p : 0;
/* We can now store from part */
if (!maybe_process_part(received_part_type::RSPAMD_RECEIVED_PART_FROM)) {
/* Do not accept malformed from */
return {};
}

g_assert (pos != 0);
p += pos;
len = end > p ? end - p : 0;
}


if (len > 2 && lit_compare_lowercase<2>("by", p)) { if (len > 2 && lit_compare_lowercase<2>("by", p)) {
p += sizeof("by") - 1; p += sizeof("by") - 1;
{"from_hostname", "smtp11.mailtrack.pl"} {"from_hostname", "smtp11.mailtrack.pl"}
} }
}, },
// No from part
{"by mail.832zsu.cn (Postfix) with ESMTPA id AAD722133E34"sv,
{
{"by_hostname", "mail.832zsu.cn"},
}
},
}; };
rspamd_mempool_t *pool = rspamd_mempool_new_default("rcvd test", 0); rspamd_mempool_t *pool = rspamd_mempool_new_default("rcvd test", 0);



Loading…
Cancel
Save