summaryrefslogtreecommitdiffstats
path: root/src/ragel/smtp_date_parser.rl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ragel/smtp_date_parser.rl')
-rw-r--r--src/ragel/smtp_date_parser.rl8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/ragel/smtp_date_parser.rl b/src/ragel/smtp_date_parser.rl
index f0d49c23a..48a1cbcbf 100644
--- a/src/ragel/smtp_date_parser.rl
+++ b/src/ragel/smtp_date_parser.rl
@@ -13,7 +13,7 @@
%% write data;
guint64
-rspamd_parse_smtp_date (const char *data, size_t len)
+rspamd_parse_smtp_date (const char *data, size_t len, GError **err)
{
const gchar *p = data, *pe = data + len, *eof = data + len, *tmp = data;
struct tm tm;
@@ -25,5 +25,11 @@ rspamd_parse_smtp_date (const char *data, size_t len)
%% write init;
%% write exec;
+ if ( cs < %%{ write first_final; }%% ) {
+ g_set_error (err, g_quark_from_static_string ("smtp_date"), cs, "invalid date at offset %d (%c), state %d",
+ p - data, *p, cs);
+ return (guint64)(-1);
+ }
+
return rspamd_tm_to_time (&tm, tz);
} \ No newline at end of file