aboutsummaryrefslogtreecommitdiffstats
path: root/src/ragel
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2020-09-01 14:58:35 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2020-09-01 14:58:35 +0100
commite0202bf46cc5e3641bec6a7e6b5b986ff6cc283d (patch)
treecb69e89d616c4c4925604c5731d08668286a5127 /src/ragel
parentf031b11ddb8b74b82983b634fc910926ffc58600 (diff)
downloadrspamd-e0202bf46cc5e3641bec6a7e6b5b986ff6cc283d.tar.gz
rspamd-e0202bf46cc5e3641bec6a7e6b5b986ff6cc283d.zip
[Fix] Understand utf8 in content-disposition parser
Diffstat (limited to 'src/ragel')
-rw-r--r--src/ragel/content_disposition.rl2
-rw-r--r--src/ragel/smtp_base.rl5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ragel/content_disposition.rl b/src/ragel/content_disposition.rl
index abcd7796f..ff00dce94 100644
--- a/src/ragel/content_disposition.rl
+++ b/src/ragel/content_disposition.rl
@@ -7,7 +7,7 @@
balanced_ccontent := ccontent* ')' @{ fret; };
comment = "(" (FWS? ccontent)* FWS? ")";
CFWS = ((FWS? comment)+ FWS?) | FWS;
- qcontent = qtextSMTP | quoted_pairSMTP;
+ qcontent = qtextSMTP | quoted_pairSMTP | textUTF8;
quoted_string = CFWS?
(DQUOTE
(((FWS? qcontent)* FWS?) >Quoted_Str_Start %Quoted_Str_End)
diff --git a/src/ragel/smtp_base.rl b/src/ragel/smtp_base.rl
index c9cc91061..cb4f066bc 100644
--- a/src/ragel/smtp_base.rl
+++ b/src/ragel/smtp_base.rl
@@ -24,6 +24,11 @@
quoted_pairSMTP = "\\" 32..126;
qtextSMTP = 32..33 | 35..91 | 93..126;
+ utf8_cont = 0x80..0xbf;
+ utf8_2c = 0xc0..0xdf utf8_cont;
+ utf8_3c = 0xe0..0xef utf8_cont utf8_cont;
+ utf8_4c = 0xf0..0xf7 utf8_cont utf8_cont utf8_cont;
+ textUTF8 = qtextSMTP | utf8_2c | utf8_3c | utf8_4c;
Atom = atext+;
Dot_string = Atom ("." Atom)*;
dot_atom_text = atext+ ("." atext+)*;