goffset last_offset;
unsigned int i, sel = 0;
enum rspamd_mime_parse_error ret;
+ bool enforce_closing = false;
last_offset = (multipart->raw_data.begin - st->start) +
multipart->raw_data.len;
cur = &g_array_index(st->boundaries, struct rspamd_mime_boundary, i);
if (cur->boundary > last_offset) {
+ /*
+ * We have reached the end of the part, so we have to close it implicitly
+ * like MUA do
+ */
+ task->flags |= RSPAMD_TASK_FLAG_BROKEN_HEADERS;
+ enforce_closing = true;
break;
}
}
}
- if (i == st->boundaries->len && cb->cur_boundary) {
+ if (enforce_closing || (i == st->boundaries->len && cb->cur_boundary)) {
/* Process the last part */
struct rspamd_mime_boundary fb;