diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-04-25 09:40:00 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-04-25 09:40:00 +0100 |
commit | dc5966e5907dc159452ebe86b4ac6d656f7c806d (patch) | |
tree | f2dbfa1ad0d40c376af5726ff67de8e8bbfbae49 /src/ragel/smtp_addr_parser.rl | |
parent | 41219c6320a4c9744e5a051070fc78c1dd6403dd (diff) | |
download | rspamd-dc5966e5907dc159452ebe86b4ac6d656f7c806d.tar.gz rspamd-dc5966e5907dc159452ebe86b4ac6d656f7c806d.zip |
[Fix] Fix SMTP address parsing machine
Diffstat (limited to 'src/ragel/smtp_addr_parser.rl')
-rw-r--r-- | src/ragel/smtp_addr_parser.rl | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/ragel/smtp_addr_parser.rl b/src/ragel/smtp_addr_parser.rl index 5d08d7d4f..64e1ae4fb 100644 --- a/src/ragel/smtp_addr_parser.rl +++ b/src/ragel/smtp_addr_parser.rl @@ -4,7 +4,6 @@ action User_start { addr->user = p; - addr->addr = p; } action User_end { @@ -41,14 +40,34 @@ action Empty_addr { addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY; addr->addr = ""; + addr->user = addr->addr; + addr->domain = addr->addr; } action Valid_addr { addr->flags |= RSPAMD_EMAIL_ADDR_VALID; } - action Angled_addr { + action Angled_addr_start { + addr->addr = p; + } + + action Unangled_addr_start { + addr->addr = p; + } + + action Angled_addr_end { + addr->flags |= RSPAMD_EMAIL_ADDR_BRACED; + if (addr->addr) { + addr->addr_len = p - addr->addr; + } + } + + action Unangled_addr_end { addr->flags |= RSPAMD_EMAIL_ADDR_BRACED; + if (addr->addr) { + addr->addr_len = p - addr->addr; + } } include smtp_address "smtp_address.rl"; |