summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Henriksen <LarsHenriksen@get2net.dk>2020-11-09 09:46:59 +0100
committerLukas Fleischer <lfleischer@calcurse.org>2020-12-19 09:19:59 -0500
commit0af69778b50beec99a0d08d4a543274e67b4de96 (patch)
tree9b0e13f78f68469659becbc54c4c1b413abf9c8c
parente3dd92ef71ecd06ef2a3ef2ef49beccb5d22cc0f (diff)
downloadcalcurse-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>
-rw-r--r--src/ical.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/ical.c b/src/ical.c
index 160afc2..ad96f11 100644
--- a/src/ical.c
+++ b/src/ical.c
@@ -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."));