diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 1665feac37df..5313388d8fcf 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -596,7 +596,12 @@ PHP_FUNCTION(ip2long) Z_PARAM_PATH(addr, addr_len) ZEND_PARSE_PARAMETERS_END(); - if (addr_len == 0 || inet_pton(AF_INET, addr, &ip) != 1) { + if (addr_len == 0) { + zend_argument_must_not_be_empty_error(1); + RETURN_THROWS(); + } + + if (inet_pton(AF_INET, addr, &ip) != 1) { RETURN_FALSE; } #ifdef _AIX @@ -1177,8 +1182,8 @@ PHP_FUNCTION(time_nanosleep) zend_argument_value_error(1, "must be greater than or equal to 0"); RETURN_THROWS(); } - if (tv_nsec < 0) { - zend_argument_value_error(2, "must be greater than or equal to 0"); + if (tv_nsec < 0 || tv_nsec > 999999999) { + zend_argument_value_error(2, "must be between 0 and 999999999"); RETURN_THROWS(); } @@ -1192,10 +1197,8 @@ PHP_FUNCTION(time_nanosleep) add_assoc_long_ex(return_value, "seconds", sizeof("seconds")-1, php_rem.tv_sec); add_assoc_long_ex(return_value, "nanoseconds", sizeof("nanoseconds")-1, php_rem.tv_nsec); return; - } else if (errno == EINVAL) { - zend_value_error("Nanoseconds was not in the range 0 to 999 999 999 or seconds was negative"); - RETURN_THROWS(); } + ZEND_ASSERT(errno != EINVAL); RETURN_FALSE; } @@ -2119,7 +2122,7 @@ PHP_FUNCTION(connection_aborted) { ZEND_PARSE_PARAMETERS_NONE(); - RETURN_LONG(PG(connection_status) & PHP_CONNECTION_ABORTED); + RETURN_BOOL(PG(connection_status) & PHP_CONNECTION_ABORTED); } /* }}} */ @@ -2137,14 +2140,14 @@ PHP_FUNCTION(ignore_user_abort) { bool arg = 0; bool arg_is_null = 1; - int old_setting; + bool old_setting; ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL Z_PARAM_BOOL_OR_NULL(arg, arg_is_null) ZEND_PARSE_PARAMETERS_END(); - old_setting = (unsigned short)PG(ignore_user_abort); + old_setting = PG(ignore_user_abort); if (!arg_is_null) { zend_string *key = ZSTR_INIT_LITERAL("ignore_user_abort", 0); @@ -2152,7 +2155,7 @@ PHP_FUNCTION(ignore_user_abort) zend_string_release_ex(key, 0); } - RETURN_LONG(old_setting); + RETURN_BOOL(old_setting); } /* }}} */ diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index 7292122abae4..586d245903e3 100644 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -2039,11 +2039,11 @@ function get_include_path(): string|false {} /** @refcount 1 */ function print_r(mixed $value, bool $return = false): string|true {} -function connection_aborted(): int {} +function connection_aborted(): bool {} function connection_status(): int {} -function ignore_user_abort(?bool $enable = null): int {} +function ignore_user_abort(?bool $enable = null): bool {} #ifdef HAVE_GETSERVBYNAME function getservbyname(string $service, string $protocol): int|false {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 21a14c0bfedf..127858103c39 100644 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit basic_functions.stub.php instead. - * Stub hash: 1e7c1c8937b439ecab1343a0e78a6092bcbbb0fc + * Stub hash: 5ccf5208c22244d77b47ac0f2363bf67eccb0e95 * Has decl header: yes */ #include "zend_attributes.h" @@ -544,11 +544,11 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_print_r, 0, 1, MAY_BE_STRING|MAY ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, return, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() -#define arginfo_connection_aborted arginfo_ob_get_level +#define arginfo_connection_aborted arginfo_ob_flush #define arginfo_connection_status arginfo_ob_get_level -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ignore_user_abort, 0, 0, IS_LONG, 0) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ignore_user_abort, 0, 0, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, enable, _IS_BOOL, 1, "null") ZEND_END_ARG_INFO() diff --git a/ext/standard/basic_functions_decl.h b/ext/standard/basic_functions_decl.h index e1f012c26370..a62459499d23 100644 --- a/ext/standard/basic_functions_decl.h +++ b/ext/standard/basic_functions_decl.h @@ -1,8 +1,8 @@ /* This is a generated file, edit basic_functions.stub.php instead. - * Stub hash: 1e7c1c8937b439ecab1343a0e78a6092bcbbb0fc */ + * Stub hash: 5ccf5208c22244d77b47ac0f2363bf67eccb0e95 */ -#ifndef ZEND_BASIC_FUNCTIONS_DECL_1e7c1c8937b439ecab1343a0e78a6092bcbbb0fc_H -#define ZEND_BASIC_FUNCTIONS_DECL_1e7c1c8937b439ecab1343a0e78a6092bcbbb0fc_H +#ifndef ZEND_BASIC_FUNCTIONS_DECL_5ccf5208c22244d77b47ac0f2363bf67eccb0e95_H +#define ZEND_BASIC_FUNCTIONS_DECL_5ccf5208c22244d77b47ac0f2363bf67eccb0e95_H typedef enum zend_enum_SortDirection { ZEND_ENUM_SortDirection_Ascending = 1, @@ -20,4 +20,4 @@ typedef enum zend_enum_RoundingMode { ZEND_ENUM_RoundingMode_PositiveInfinity = 8, } zend_enum_RoundingMode; -#endif /* ZEND_BASIC_FUNCTIONS_DECL_1e7c1c8937b439ecab1343a0e78a6092bcbbb0fc_H */ +#endif /* ZEND_BASIC_FUNCTIONS_DECL_5ccf5208c22244d77b47ac0f2363bf67eccb0e95_H */ diff --git a/ext/standard/tests/general_functions/bug72300.phpt b/ext/standard/tests/general_functions/bug72300.phpt index 94d1f20f8ad8..4b82986e134d 100644 --- a/ext/standard/tests/general_functions/bug72300.phpt +++ b/ext/standard/tests/general_functions/bug72300.phpt @@ -14,9 +14,9 @@ var_dump(ini_get("ignore_user_abort")); ?> --EXPECT-- -int(0) -int(1) +bool(false) +bool(true) string(1) "1" -int(1) -int(0) +bool(true) +bool(false) string(1) "0" diff --git a/ext/standard/tests/general_functions/connection_aborted.phpt b/ext/standard/tests/general_functions/connection_aborted.phpt index 5932095f0978..d40f3cf83d5c 100644 --- a/ext/standard/tests/general_functions/connection_aborted.phpt +++ b/ext/standard/tests/general_functions/connection_aborted.phpt @@ -1,5 +1,5 @@ --TEST-- -int connection_aborted ( void ); +Basic test for connection_aborted() --CREDITS-- marcosptf - - #phparty7 - @phpsp - novatec/2015 - sao paulo - br --FILE-- @@ -7,4 +7,4 @@ marcosptf - - #phparty7 - @phpsp - novatec/2015 - sao p var_dump(connection_aborted()); ?> --EXPECT-- -int(0) +bool(false) diff --git a/ext/standard/tests/misc/time_nanosleep_error4.phpt b/ext/standard/tests/misc/time_nanosleep_error4.phpt index 740a68b8344b..12bf4e32c01a 100644 --- a/ext/standard/tests/misc/time_nanosleep_error4.phpt +++ b/ext/standard/tests/misc/time_nanosleep_error4.phpt @@ -10,12 +10,12 @@ if (!function_exists('time_nanosleep')) die("skip"); --FILE-- getMessage(), "\n"; +} ?> ---EXPECTF-- -Fatal error: Uncaught ValueError: time_nanosleep(): Argument #2 ($nanoseconds) must be greater than or equal to 0 in %s:%d -Stack trace: -#0 %s(%d): time_nanosleep(0, -10) -#1 {main} - thrown in %s on line %d +--EXPECT-- +time_nanosleep(): Argument #2 ($nanoseconds) must be between 0 and 999999999 diff --git a/ext/standard/tests/misc/time_nanosleep_error5.phpt b/ext/standard/tests/misc/time_nanosleep_error5.phpt index 7116da5519ca..2c374388a632 100644 --- a/ext/standard/tests/misc/time_nanosleep_error5.phpt +++ b/ext/standard/tests/misc/time_nanosleep_error5.phpt @@ -7,12 +7,12 @@ time_nanosleep — Delay for a number of seconds and nanoseconds --FILE-- getMessage(), "\n"; +} ?> ---EXPECTF-- -Fatal error: Uncaught ValueError: Nanoseconds was not in the range 0 to 999 999 999 or seconds was negative in %s:%d -Stack trace: -#0 %s(%d): time_nanosleep(0, 1000000000) -#1 {main} - thrown in %s on line %d +--EXPECT-- +time_nanosleep(): Argument #2 ($nanoseconds) must be between 0 and 999999999 diff --git a/ext/standard/tests/network/ip.phpt b/ext/standard/tests/network/ip.phpt index b6ac49d5df6a..6924befea3b0 100644 --- a/ext/standard/tests/network/ip.phpt +++ b/ext/standard/tests/network/ip.phpt @@ -7,21 +7,20 @@ if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only"); --FILE-- getMessage(), PHP_EOL; +} +try { + var_dump(ip2long("127\00.0.1")); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +?> +--EXPECT-- +ValueError: ip2long(): Argument #1 ($ip) must not be empty +ValueError: ip2long(): Argument #1 ($ip) must not contain any null bytes + diff --git a/ext/standard/tests/network/ip_x86_64.phpt b/ext/standard/tests/network/ip_x86_64.phpt index 16e855188aaf..58df8086577d 100644 --- a/ext/standard/tests/network/ip_x86_64.phpt +++ b/ext/standard/tests/network/ip_x86_64.phpt @@ -7,21 +7,19 @@ if (PHP_INT_SIZE == 4) die("skip this test is for >32bit platform only"); --FILE-- getMessage(), "\n"; - } +try { + time_nanosleep(-1, 0); +} catch (Throwable $exception) { + echo $exception::class, ': ', $exception->getMessage(), "\n"; +} - try { - time_nanosleep(0, -1); - } catch (Throwable $exception) { - echo $exception::class, ': ', $exception->getMessage(), "\n"; - } +try { + time_nanosleep(0, -1); +} catch (Throwable $exception) { + echo $exception::class, ': ', $exception->getMessage(), "\n"; +} ?> --EXPECT-- ValueError: time_nanosleep(): Argument #1 ($seconds) must be greater than or equal to 0 -ValueError: time_nanosleep(): Argument #2 ($nanoseconds) must be greater than or equal to 0 +ValueError: time_nanosleep(): Argument #2 ($nanoseconds) must be between 0 and 999999999