basic/calendarspec: add check for repeat values that would overflow

https://oss-fuzz.com/v2/issue/4651449704251392/7004
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2018-03-21 00:46:13 +01:00
parent e4711004d6
commit e127f26b1a
3 changed files with 10 additions and 0 deletions
+6
View File
@@ -187,6 +187,8 @@ int calendar_spec_normalize(CalendarSpec *c) {
}
_pure_ static bool chain_valid(CalendarComponent *c, int from, int to, bool end_of_month) {
assert(to >= from);
if (!c)
return true;
@@ -197,6 +199,10 @@ _pure_ static bool chain_valid(CalendarComponent *c, int from, int to, bool end_
if (c->start < from || c->start > to)
return false;
/* Avoid overly large values that could cause overflow */
if (c->repeat > to - from)
return false;
/*
* c->repeat must be short enough so at least one repetition may
* occur before the end of the interval. For dates scheduled