From abf0e37f8ac2f24fa2a3d6142f44f8febaeb82b5 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Fri, 2 May 2025 07:24:15 +0100 Subject: [PATCH 1/2] Fix GH-18481: date_sunrise check sun rise with offset if is finite/is nan --- ext/date/php_date.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/date/php_date.c b/ext/date/php_date.c index d8a0704ca250a..82fd8593b08d9 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -5346,7 +5346,7 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, bool calc_s if (N > 24 || N < 0) { N -= floor(N / 24) * 24; } - if (N > 24 || N < 0) { + if (N > 24 || N < 0 || !zend_finite(N)) { RETURN_FALSE; } From c41ac5d7193734ec738eb778d5d532cbdd3d34e9 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Fri, 2 May 2025 12:19:57 +0100 Subject: [PATCH 2/2] add tests --- ext/date/php_date.c | 2 +- ext/date/tests/gh18481.phpt | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 ext/date/tests/gh18481.phpt diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 82fd8593b08d9..2347fd55706fa 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -5346,7 +5346,7 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, bool calc_s if (N > 24 || N < 0) { N -= floor(N / 24) * 24; } - if (N > 24 || N < 0 || !zend_finite(N)) { + if (!(N <= 24 && N >= 0)) { RETURN_FALSE; } diff --git a/ext/date/tests/gh18481.phpt b/ext/date/tests/gh18481.phpt new file mode 100644 index 0000000000000..6617a19474461 --- /dev/null +++ b/ext/date/tests/gh18481.phpt @@ -0,0 +1,21 @@ +--TEST-- +GH-18481 (date_sunrise with utcOffset as INF) +--FILE-- + +--EXPECTF-- +Deprecated: Function date_sunrise() is deprecated in %s on line %d +bool(false) + +Deprecated: Function date_sunrise() is deprecated in %s on line %d +bool(false) + +Deprecated: Function date_sunrise() is deprecated in %s on line %d +bool(false) + +Deprecated: Function date_sunrise() is deprecated in %s on line %d +bool(false)