Skip to content

Commit 7f9479f

Browse files
committed
following up.
1 parent f119df3 commit 7f9479f

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

ext/sockets/sockets.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,14 @@ char *sockets_strerror(int error) /* {{{ */
368368
{
369369
const char *buf;
370370

371+
ZEND_ASSERT(error >= INT_MIN);
371372
#ifndef PHP_WIN32
372373
if (error < -10000) {
373-
error = -error - 10000;
374+
if (error == INT_MIN) {
375+
error = 2147473648;
376+
} else {
377+
error = -error - 10000;
378+
}
374379

375380
#ifdef HAVE_HSTRERROR
376381
buf = hstrerror(error);
@@ -1248,8 +1253,8 @@ PHP_FUNCTION(socket_strerror)
12481253
Z_PARAM_LONG(arg1)
12491254
ZEND_PARSE_PARAMETERS_END();
12501255

1251-
if (arg1 <= INT_MIN || arg1 > INT_MAX) {
1252-
zend_argument_value_error(1, "must be between %d and %d", (INT_MIN + 1), INT_MAX);
1256+
if (ZEND_LONG_EXCEEDS_INT(arg1)) {
1257+
zend_argument_value_error(1, "must be between %d and %d", INT_MIN, INT_MAX);
12531258
RETURN_THROWS();
12541259
}
12551260

ext/sockets/tests/gh16267.phpt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,13 @@ sockets
66
<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); ?>
77
--FILE--
88
<?php
9-
try {
10-
socket_strerror(-2147483648);
11-
} catch (\ValueError $e) {
12-
echo $e->getMessage() . PHP_EOL;
13-
}
9+
var_dump(socket_strerror(-2147483648));
1410
try {
1511
socket_strerror(2147483648);
1612
} catch (\ValueError $e) {
1713
echo $e->getMessage() . PHP_EOL;
1814
}
1915
?>
2016
--EXPECTF--
21-
socket_strerror(): Argument #1 ($error_code) must be between %s and %d
22-
socket_strerror(): Argument #1 ($error_code) must be between %s and %d
17+
string(22) "Unknown resolver error"
18+
socket_strerror(): Argument #1 ($error_code) must be between %i and %d

0 commit comments

Comments
 (0)