Skip to content

Commit 7c37c25

Browse files
committed
Merge branch 'PHP-8.4'
* PHP-8.4: Fix GH-14732: date_sun_info() fails for non-finite values
2 parents dd5c8f7 + 68d3000 commit 7c37c25

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

ext/date/php_date.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5487,6 +5487,10 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, bool calc_s
54875487
}
54885488
altitude = 90 - zenith;
54895489

5490+
if (!zend_finite(latitude) || !zend_finite(longitude)) {
5491+
RETURN_FALSE;
5492+
}
5493+
54905494
/* Initialize time struct */
54915495
tzi = get_timezone_info();
54925496
if (!tzi) {
@@ -5564,6 +5568,15 @@ PHP_FUNCTION(date_sun_info)
55645568
Z_PARAM_DOUBLE(longitude)
55655569
ZEND_PARSE_PARAMETERS_END();
55665570

5571+
if (!zend_finite(latitude)) {
5572+
zend_argument_value_error(2, "must be finite");
5573+
RETURN_THROWS();
5574+
}
5575+
if (!zend_finite(longitude)) {
5576+
zend_argument_value_error(3, "must be finite");
5577+
RETURN_THROWS();
5578+
}
5579+
55675580
/* Initialize time struct */
55685581
tzi = get_timezone_info();
55695582
if (!tzi) {

ext/date/tests/gh14732.phpt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
--TEST--
2+
GH-14732 (date_sun_info() fails for non-finite values)
3+
--FILE--
4+
<?php
5+
try {
6+
date_sun_info(1, NAN, 1);
7+
} catch (ValueError $ex) {
8+
echo $ex->getMessage(), "\n";
9+
}
10+
try {
11+
date_sun_info(1, -INF, 1);
12+
} catch (ValueError $ex) {
13+
echo $ex->getMessage(), "\n";
14+
}
15+
try {
16+
date_sun_info(1, 1, NAN);
17+
} catch (ValueError $ex) {
18+
echo $ex->getMessage(), "\n";
19+
}
20+
try {
21+
date_sun_info(1, 1, INF);
22+
} catch (ValueError $ex) {
23+
echo $ex->getMessage(), "\n";
24+
}
25+
var_dump(date_sunset(1, SUNFUNCS_RET_STRING, NAN, 1));
26+
var_dump(date_sunrise(1, SUNFUNCS_RET_STRING, 1, NAN));
27+
?>
28+
--EXPECTF--
29+
date_sun_info(): Argument #2 ($latitude) must be finite
30+
date_sun_info(): Argument #2 ($latitude) must be finite
31+
date_sun_info(): Argument #3 ($longitude) must be finite
32+
date_sun_info(): Argument #3 ($longitude) must be finite
33+
34+
Deprecated: Constant SUNFUNCS_RET_STRING is deprecated in %s on line %d
35+
36+
Deprecated: Function date_sunset() is deprecated since 8.1, use date_sun_info() instead in %s on line %d
37+
bool(false)
38+
39+
Deprecated: Constant SUNFUNCS_RET_STRING is deprecated in %s on line %d
40+
41+
Deprecated: Function date_sunrise() is deprecated since 8.1, use date_sun_info() instead in %s on line %d
42+
bool(false)

0 commit comments

Comments
 (0)