From a5e8ac62d9bdb101f6cd42beb63aec0a21daaf11 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sun, 6 Oct 2024 05:46:33 +0100 Subject: [PATCH] Fix GH-16258 overflow on jddayofweek argument. close GH-16263 --- NEWS | 1 + ext/calendar/dow.c | 9 +-------- ext/calendar/tests/gh16258.phpt | 12 ++++++++++++ 3 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 ext/calendar/tests/gh16258.phpt diff --git a/NEWS b/NEWS index f4ad67f2f0e..bb9ef61cd6e 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,7 @@ PHP NEWS . Fixed GH-16240: jdtounix overflow on argument value. (David Carlier) . Fixed GH-16241: easter_days/easter_date overflow on year argument. (David Carlier) + . Fixed GH-16263: jddayofweek overflow. (cmb) - CLI: . Fixed bug GH-16137: duplicate http headers when set several times by diff --git a/ext/calendar/dow.c b/ext/calendar/dow.c index 38da7e157c2..079dd6c15ad 100644 --- a/ext/calendar/dow.c +++ b/ext/calendar/dow.c @@ -33,14 +33,7 @@ int DayOfWeek( zend_long sdn) { - int dow; - - dow = (sdn + 1) % 7; - if (dow >= 0) { - return (dow); - } else { - return (dow + 7); - } + return (int)(sdn % 7 + 8) % 7; } const char * const DayNameShort[7] = diff --git a/ext/calendar/tests/gh16258.phpt b/ext/calendar/tests/gh16258.phpt new file mode 100644 index 00000000000..9f2b70fac54 --- /dev/null +++ b/ext/calendar/tests/gh16258.phpt @@ -0,0 +1,12 @@ +--TEST-- +GH-16258 (jddayofweek overflow on argument) +--EXTENSIONS-- +calendar +--FILE-- + +--EXPECT-- +DONE