File tree Expand file tree Collapse file tree 3 files changed +41
-9
lines changed
Expand file tree Collapse file tree 3 files changed +41
-9
lines changed Original file line number Diff line number Diff line change @@ -66,6 +66,8 @@ PHP NEWS
6666 the Uri\WhatWg\Url parser. (timwolla)
6767 . Reject out-of-range ports when using the Uri\Rfc3986\Uri parser.
6868 (timwolla)
69+ . Return null instead of 0 for Uri\Rfc3986\Uri::getPort() when the
70+ URI contains an empty port. (timwolla)
6971 . Clean up naming of internal API. (timwolla)
7072
717328 Aug 2025, PHP 8.5.0beta2
Original file line number Diff line number Diff line change 1+ --TEST--
2+ Test empty ports become null
3+ --EXTENSIONS--
4+ uri
5+ --FILE--
6+ <?php
7+
8+ $ uri = new \Uri \Rfc3986 \Uri ('https://example.com: ' );
9+ var_dump ($ uri , $ uri ->getPort ());
10+
11+ ?>
12+ --EXPECTF--
13+ object(Uri\Rfc3986\Uri)#%d (8) {
14+ ["scheme"]=>
15+ string(5) "https"
16+ ["username"]=>
17+ NULL
18+ ["password"]=>
19+ NULL
20+ ["host"]=>
21+ string(11) "example.com"
22+ ["port"]=>
23+ NULL
24+ ["path"]=>
25+ string(0) ""
26+ ["query"]=>
27+ NULL
28+ ["fragment"]=>
29+ NULL
30+ }
31+ NULL
Original file line number Diff line number Diff line change @@ -212,7 +212,7 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_port_read(const
212212{
213213 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
214214
215- if (has_text_range (& uriparser_uri -> portText )) {
215+ if (has_text_range (& uriparser_uri -> portText ) && get_text_range_length ( & uriparser_uri -> portText ) > 0 ) {
216216 ZVAL_LONG (retval , port_str_to_zend_long_checked (uriparser_uri -> portText .first , get_text_range_length (& uriparser_uri -> portText )));
217217 } else {
218218 ZVAL_NULL (retval );
@@ -326,15 +326,14 @@ php_uri_parser_rfc3986_uris *php_uri_parser_rfc3986_parse_ex(const char *uri_str
326326 /* Make the resulting URI independent of the 'uri_str'. */
327327 uriMakeOwnerMmA (& uri , mm );
328328
329- if (
330- has_text_range (& uri .portText )
331- && port_str_to_zend_long_checked (uri .portText .first , get_text_range_length (& uri .portText )) == -1
332- ) {
333- if (!silent ) {
334- zend_throw_exception (uri_invalid_uri_exception_ce , "The port is out of range" , 0 );
335- }
329+ if (has_text_range (& uri .portText ) && get_text_range_length (& uri .portText ) > 0 ) {
330+ if (port_str_to_zend_long_checked (uri .portText .first , get_text_range_length (& uri .portText )) == -1 ) {
331+ if (!silent ) {
332+ zend_throw_exception (uri_invalid_uri_exception_ce , "The port is out of range" , 0 );
333+ }
336334
337- goto fail ;
335+ goto fail ;
336+ }
338337 }
339338
340339 php_uri_parser_rfc3986_uris * uriparser_uris = uriparser_create_uris ();
You can’t perform that action at this time.
0 commit comments