aboutsummaryrefslogtreecommitdiffstats
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.rl13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ragel/smtp_date_parser.rl b/src/ragel/smtp_date_parser.rl
index d53e61148..8d99ea94d 100644
--- a/src/ragel/smtp_date_parser.rl
+++ b/src/ragel/smtp_date_parser.rl
@@ -19,13 +19,24 @@ rspamd_parse_smtp_date (const unsigned char *data, size_t len, GError **err)
const unsigned char *p = data, *pe = data + len, *eof = data + len, *tmp = data;
struct tm tm;
glong tz = 0;
- gint cs = 0;
+ gint cs = 0, *stack = NULL;;
+ gsize top = 0;
memset (&tm, 0, sizeof (tm));
+ struct _ragel_st_storage {
+ int *data;
+ gsize size;
+ } st_storage;
+ memset (&st_storage, 0, sizeof (st_storage));
+
%% write init;
%% write exec;
+ if (st_storage.data) {
+ free (st_storage.data);
+ }
+
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",
(int)(p - data), (*p > 0 && *p < 128) ? *p : '?', cs);