diff --git a/ext/calendar/dow.c b/ext/calendar/dow.c index 38da7e157c279..079dd6c15ada4 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 0000000000000..9f2b70fac542b --- /dev/null +++ b/ext/calendar/tests/gh16258.phpt @@ -0,0 +1,12 @@ +--TEST-- +GH-16258 (jddayofweek overflow on argument) +--EXTENSIONS-- +calendar +--FILE-- + +--EXPECT-- +DONE