mirror of
https://gitlab.gnome.org/GNOME/libxml2
synced 2025-03-28 21:33:13 +00:00
Fix integer overflow when comparing schema dates
Found by OSS-Fuzz.
This commit is contained in:
parent
905820a44c
commit
8e7c20a1af
@ -3691,6 +3691,8 @@ xmlSchemaCompareDurations(xmlSchemaValPtr x, xmlSchemaValPtr y)
|
||||
minday = 0;
|
||||
maxday = 0;
|
||||
} else {
|
||||
if (myear > LONG_MAX / 366)
|
||||
return -2;
|
||||
/* FIXME: This doesn't take leap year exceptions every 100/400 years
|
||||
into account. */
|
||||
maxday = 365 * myear + (myear + 3) / 4;
|
||||
@ -4079,6 +4081,14 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y)
|
||||
if ((x == NULL) || (y == NULL))
|
||||
return -2;
|
||||
|
||||
if ((x->value.date.year > LONG_MAX / 366) ||
|
||||
(x->value.date.year < LONG_MIN / 366) ||
|
||||
(y->value.date.year > LONG_MAX / 366) ||
|
||||
(y->value.date.year < LONG_MIN / 366)) {
|
||||
/* Possible overflow when converting to days. */
|
||||
return -2;
|
||||
}
|
||||
|
||||
if (x->value.date.tz_flag) {
|
||||
|
||||
if (!y->value.date.tz_flag) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user