]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Ignore signatures when looking for boundaries
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 12 Nov 2018 13:45:04 +0000 (13:45 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 12 Nov 2018 13:45:04 +0000 (13:45 +0000)
src/libmime/mime_parser.c

index 37b312f443d82a6ce4a2554e93b3e0cc7fa3e6f7..9ce39ad16740540c97faf49afe4f4566ff01d67c 100644 (file)
@@ -871,10 +871,25 @@ rspamd_mime_preprocess_cb (struct rspamd_multipattern *mp,
        task = st->task;
 
        if (G_LIKELY (p < end)) {
-               blen = rspamd_memcspn (p, "\r\n", end - p);
+               gboolean seen_non_dash = FALSE;
 
-               if (blen > 0) {
+               blen = 0;
+
+               while (p < end) {
+                       if (*p == '\r' || *p == '\n') {
+                               break;
+                       }
+                       else if (*p != '-') {
+                               seen_non_dash = TRUE;
+                       }
+
+                       blen ++;
+                       p ++;
+               }
+
+               if (blen > 0 && seen_non_dash) {
                        /* We have found something like boundary */
+                       p = text + match_pos;
                        bend = p + blen - 1;
 
                        if (*bend == '-') {