From: Vsevolod Stakhov Date: Sat, 24 Dec 2016 10:58:17 +0000 (+0000) Subject: [Fix] Fix parsing of messages with no content type X-Git-Tag: 1.5.0~489 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b9bce692b339291c3884aa032c649c58ea9317a6;p=rspamd.git [Fix] Fix parsing of messages with no content type Issue: #1283 Reported by: @moisseev --- diff --git a/src/libmime/mime_parser.c b/src/libmime/mime_parser.c index a78c9d072..c501b99ec 100644 --- a/src/libmime/mime_parser.c +++ b/src/libmime/mime_parser.c @@ -861,31 +861,32 @@ rspamd_mime_parse_message (struct rspamd_task *task, npart->parent_part = part; if (hdrs == NULL) { - g_set_error (err, RSPAMD_MIME_QUARK, EINVAL, - "Content type header is absent"); - - return FALSE; + sel = NULL; } + else { - for (i = 0; i < hdrs->len; i ++) { - hdr = g_ptr_array_index (hdrs, i); - ct = rspamd_content_type_parse (hdr->value, strlen (hdr->value), - task->task_pool); + for (i = 0; i < hdrs->len; i ++) { + hdr = g_ptr_array_index (hdrs, i); + ct = rspamd_content_type_parse (hdr->value, strlen (hdr->value), + task->task_pool); - /* Here we prefer multipart content-type or any content-type */ - if (ct) { - if (sel == NULL) { - sel = ct; - } - else if (ct->flags & RSPAMD_CONTENT_TYPE_MULTIPART) { - sel = ct; + /* Here we prefer multipart content-type or any content-type */ + if (ct) { + if (sel == NULL) { + sel = ct; + } + else if (ct->flags & RSPAMD_CONTENT_TYPE_MULTIPART) { + sel = ct; + } } } } if (sel == NULL) { /* For messages we automatically assume plaintext */ + msg_info_task ("cannot find content-type for a message, assume text/plain"); sel = rspamd_mempool_alloc0 (task->task_pool, sizeof (*sel)); + sel->flags = RSPAMD_CONTENT_TYPE_TEXT|RSPAMD_CONTENT_TYPE_BROKEN; RSPAMD_FTOK_ASSIGN (&sel->type, "text"); RSPAMD_FTOK_ASSIGN (&sel->subtype, "plain"); }