]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Work with broken rfc2047 tokens
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 27 Mar 2017 14:15:34 +0000 (15:15 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 27 Mar 2017 14:15:52 +0000 (15:15 +0100)
src/ragel/rfc2047_parser.rl

index 05b08a6aea74396cc5f538eefcf70921e35a4fcd..26c016361c208f6b74fa051ac3d396a4590d5825 100644 (file)
   token = (graph - especials)+;
   charset = token;
   encoding = "Q" | "q" | "B" | "b";
-  encoded_text = (print - ("?" | " "))+;
+  encoded_text = (print - ("?"))+;
   encoded_word = "=?" charset >Start_Charset %End_Charset
     ("*" language)? "?"
     encoding %End_Encoding "?"
     encoded_text >Start_Encoded %End_Encoded
-    "?=";
+    "?="?;
   main := encoded_word;
 }%%
 
@@ -64,7 +64,8 @@ rspamd_rfc2047_parser (const gchar *in, gsize len, gint *pencoding,
 {
   const char *p = in, *pe = in + len,
     *encoded_start = NULL, *encoded_end = NULL,
-    *charset_start = NULL, *charset_end = NULL;
+    *charset_start = NULL, *charset_end = NULL,
+    *eof = in + len;
   gint encoding = RSPAMD_RFC2047_QP, cs = 0;
 
   %% write init;