Skip to content

Fix wrong argument number in fsockopen/pfsockopen timeout error - #23338

Open
lacatoire wants to merge 1 commit into
php:masterfrom
lacatoire:fix/fsockopen-timeout-arg-num
Open

Fix wrong argument number in fsockopen/pfsockopen timeout error#23338
lacatoire wants to merge 1 commit into
php:masterfrom
lacatoire:fix/fsockopen-timeout-arg-num

Conversation

@lacatoire

Copy link
Copy Markdown
Member

php_fsockopen_stream() called zend_argument_value_error(6, ...) for the $timeout parameter, but $timeout is the 5th argument. Because get_function_arg_name(func, arg_num) returns NULL when arg_num exceeds the actual argument count, the error message reported the wrong number and dropped the parameter name.

Before:

ValueError: fsockopen(): Argument #6 must be -1 or between 0 and 4294967295

After:

ValueError: fsockopen(): Argument #5 ($timeout) must be -1 or between 0 and 4294967295

The same fix applies to pfsockopen(), which delegates to the same internal helper.

A regression test is included; it does not require network connectivity since the ValueError is raised before any connection attempt.

php_fsockopen_stream() called zend_argument_value_error(6, ...) for the
$timeout parameter, but $timeout is the 5th argument. This caused the
error message to show "Argument php#6" with no parameter name, since
get_function_arg_name() returns NULL when arg_num exceeds the actual
argument count.

Reproduce:
  fsockopen('localhost', 80, $err, $errstr, -2.0);
  // Before: ValueError: fsockopen(): Argument php#6 must be -1 or between...
  // After:  ValueError: fsockopen(): Argument php#5 ($timeout) must be -1...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant