summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/apoint.c6
-rw-r--r--src/event.c4
-rw-r--r--src/recur.c19
3 files changed, 29 insertions, 0 deletions
diff --git a/src/apoint.c b/src/apoint.c
index 889c371..ca400e9 100644
--- a/src/apoint.c
+++ b/src/apoint.c
@@ -165,6 +165,12 @@ struct apoint *apoint_scan(FILE * f, struct tm start, struct tm end, char state,
char buf[BUFSIZ], *newline;
time_t tstart, tend;
+ EXIT_IF(!check_date(start.tm_year, start.tm_mon, start.tm_mday) ||
+ !check_date(end.tm_year, end.tm_mon, end.tm_mday) ||
+ !check_time(start.tm_hour, start.tm_min) ||
+ !check_time(end.tm_hour, end.tm_min),
+ _("date error in appointment"));
+
/* Read the appointment description */
if (!fgets(buf, sizeof buf, f))
return NULL;
diff --git a/src/event.c b/src/event.c
index b1186a3..637dd6d 100644
--- a/src/event.c
+++ b/src/event.c
@@ -125,6 +125,10 @@ struct event *event_scan(FILE * f, struct tm start, int id, char *note)
char buf[BUFSIZ], *nl;
time_t tstart;
+ EXIT_IF(!check_date(start.tm_year, start.tm_mon, start.tm_mday) ||
+ !check_time(start.tm_hour, start.tm_min),
+ _("date error in event"));
+
/* Read the event description */
if (!fgets(buf, sizeof buf, f))
return NULL;
diff --git a/src/recur.c b/src/recur.c
index 6a3a902..8a2f79f 100644
--- a/src/recur.c
+++ b/src/recur.c
@@ -325,6 +325,14 @@ struct recur_apoint *recur_apoint_scan(FILE * f, struct tm start, struct tm end,
char buf[BUFSIZ], *nl;
time_t tstart, tend, tuntil;
+ EXIT_IF(!check_date(start.tm_year, start.tm_mon, start.tm_mday) ||
+ !check_date(end.tm_year, end.tm_mon, end.tm_mday) ||
+ !check_time(start.tm_hour, start.tm_min) ||
+ !check_time(end.tm_hour, end.tm_min) ||
+ (until.tm_year != 0 && !check_date(until.tm_year, until.tm_mon,
+ until.tm_mday)),
+ _("date error in appointment"));
+
/* Read the appointment description */
if (!fgets(buf, sizeof buf, f))
return NULL;
@@ -368,6 +376,12 @@ struct recur_event *recur_event_scan(FILE * f, struct tm start, int id,
char buf[BUFSIZ], *nl;
time_t tstart, tuntil;
+ EXIT_IF(!check_date(start.tm_year, start.tm_mon, start.tm_mday) ||
+ !check_time(start.tm_hour, start.tm_min) ||
+ (until.tm_year != 0 && !check_date(until.tm_year, until.tm_mon,
+ until.tm_mday)),
+ _("date error in event"));
+
/* Read the event description */
if (!fgets(buf, sizeof buf, f))
return NULL;
@@ -750,6 +764,11 @@ void recur_exc_scan(llist_t * lexc, FILE * data_file)
&day.tm_mon, &day.tm_mday, &day.tm_year) != 3) {
EXIT(_("syntax error in item date"));
}
+
+ EXIT_IF(!check_date(day.tm_year, day.tm_mon, day.tm_mday) ||
+ !check_time(day.tm_hour, day.tm_min),
+ _("date error in item exception"));
+
day.tm_hour = 0;
day.tm_min = day.tm_sec = 0;
day.tm_isdst = -1;