diff --git a/NEWS b/NEWS index a13c608851e46..12231ebcdc53b 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.3.1 - +- Standard + . Fixed GH-9316 (http_build_query() default null argument for $arg_separator + is implicitly coerced to string). (Girgias) 23 Nov 2023, PHP 8.3.0 diff --git a/ext/standard/http.c b/ext/standard/http.c index 92d0af5cd9b6e..1145329a794ff 100644 --- a/ext/standard/http.c +++ b/ext/standard/http.c @@ -226,7 +226,7 @@ PHP_FUNCTION(http_build_query) Z_PARAM_ARRAY_OR_OBJECT(formdata) Z_PARAM_OPTIONAL Z_PARAM_STRING(prefix, prefix_len) - Z_PARAM_STR(arg_sep) + Z_PARAM_STR_OR_NULL(arg_sep) Z_PARAM_LONG(enc_type) ZEND_PARSE_PARAMETERS_END(); diff --git a/ext/standard/tests/http/http_build_query/gh12745.phpt b/ext/standard/tests/http/http_build_query/gh12745.phpt new file mode 100644 index 0000000000000..3418498bf2269 --- /dev/null +++ b/ext/standard/tests/http/http_build_query/gh12745.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug GH-9316 (http_build_query() default null argument for $arg_separator is implicitly coerced to string) +--FILE-- + 'world', + 'foo' => 'bar', +]; + +var_dump(http_build_query( + $data, + encoding_type: PHP_QUERY_RFC3986 +)); +?> +--EXPECT-- +string(19) "hello=world&foo=bar"