Quellcode durchsuchen

[Minor] Add CFWS clause to the BNF

tags/2.7
Vsevolod Stakhov vor 3 Jahren
Ursprung
Commit
0c312c81f3
2 geänderte Dateien mit 25 neuen und 2 gelöschten Zeilen
  1. 13
    1
      src/ragel/smtp_date.rl
  2. 12
    1
      src/ragel/smtp_date_parser.rl

+ 13
- 1
src/ragel/smtp_date.rl Datei anzeigen

@@ -191,6 +191,18 @@
action TZ_PDT {
tz = -700;
}
prepush {
if (top >= st_storage.size) {
st_storage.size = (top + 1) * 2;
st_storage.data = realloc (st_storage.data, st_storage.size * sizeof (int));
g_assert (st_storage.data != NULL);
stack = st_storage.data;
}
}
ccontent = ctext | FWS | '(' @{ fcall balanced_ccontent; };
balanced_ccontent := ccontent* ')' @{ fret; };
comment = "(" (FWS? ccontent)* FWS? ")";
CFWS = ((FWS? comment)+ FWS?) | FWS;
digit_2 = digit{2};
digit_4 = digit{4};
day_name = "Mon" | "Tue" | "Wed" | "Thu" |
@@ -214,5 +226,5 @@
"PST" %TZ_PST | "PDT" %TZ_PDT |
[a-iA-I] | [k-zK-Z];
time = time_of_day %DT_End FWS (zone | obs_zone %Obs_Zone_End) FWS*;
date_time = (day_of_week ",")? date time;
date_time = (day_of_week ",")? date time CFWS?;
}%%

+ 12
- 1
src/ragel/smtp_date_parser.rl Datei anzeigen

@@ -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);

Laden…
Abbrechen
Speichern