diff options
author | Lars Henriksen <LarsHenriksen@get2net.dk> | 2020-11-09 09:46:59 +0100 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2020-12-19 09:19:59 -0500 |
commit | 0af69778b50beec99a0d08d4a543274e67b4de96 (patch) | |
tree | 9b0e13f78f68469659becbc54c4c1b413abf9c8c /src | |
parent | e3dd92ef71ecd06ef2a3ef2ef49beccb5d22cc0f (diff) | |
download | calcurse-0af69778b50beec99a0d08d4a543274e67b4de96.tar.gz calcurse-0af69778b50beec99a0d08d4a543274e67b4de96.zip |
Fix parsing of UNTIL in iCal import
Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/ical.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -1055,7 +1055,7 @@ static struct rpt *ical_read_rrule(FILE *log, char *rrulestr, time_t start, int *count) { - char freqstr[8]; + char freqstr[8], datestr[17]; struct rpt *rpt; char *p, *q; @@ -1084,7 +1084,7 @@ static struct rpt *ical_read_rrule(FILE *log, char *rrulestr, /* FREQ rule part */ if ((p = strstr(rrulestr, "FREQ="))) { - if (sscanf(p, "FREQ=%s", freqstr) != 1) { + if (sscanf(p, "FREQ=%7s", freqstr) != 1) { ical_log(log, ICAL_VEVENT, itemline, _("frequency not set in rrule.")); (*noskipped)++; @@ -1136,7 +1136,14 @@ static struct rpt *ical_read_rrule(FILE *log, char *rrulestr, } if ((p = strstr(rrulestr, "UNTIL="))) { - rpt->until = ical_datetime2time_t(strchr(p, '=') + 1, NULL, type); + if (sscanf(p, "UNTIL=%16s", datestr) != 1) { + ical_log(log, ICAL_VEVENT, itemline, + _("missing until value.")); + (*noskipped)++; + mem_free(rpt); + return NULL; + } + rpt->until = ical_datetime2time_t(datestr, NULL, type); if (!rpt->until) { ical_log(log, ICAL_VEVENT, itemline, _("invalid until format.")); |