diff options
author | Nick Wellnhofer <wellnhofer@aevum.de> | 2019-04-25 11:16:58 +0200 |
---|---|---|
committer | Nick Wellnhofer <wellnhofer@aevum.de> | 2019-04-25 11:16:58 +0200 |
commit | c75b811de0afeea6acf19c99a755b8e1c0585aa9 (patch) | |
tree | e10820074610625c3e67efa021a57fd579972353 | |
parent | eecd46066941e6097361da4076a17395e1e65750 (diff) | |
download | libxslt-c75b811de0afeea6acf19c99a755b8e1c0585aa9.tar.gz |
Fix integer overflow in _exsltDateDayInWeek
Found by OSS-Fuzz.
-rw-r--r-- | libexslt/date.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libexslt/date.c b/libexslt/date.c index 32c9db70..d075adc5 100644 --- a/libexslt/date.c +++ b/libexslt/date.c @@ -1474,11 +1474,12 @@ _exsltDateDayInWeek(long yday, long yr) long ret; if (yr <= 0) { - ret = ((yr-2 + ((yr/4)-(yr/100)+(yr/400)) + yday) % 7); + /* Compute modulus twice to avoid integer overflow */ + ret = ((yr%7-2 + ((yr/4)-(yr/100)+(yr/400)) + yday) % 7); if (ret < 0) ret += 7; } else - ret = (((yr-1) + (((yr-1)/4)-((yr-1)/100)+((yr-1)/400)) + yday) % 7); + ret = (((yr%7-1) + (((yr-1)/4)-((yr-1)/100)+((yr-1)/400)) + yday) % 7); return ret; } |