Actions
Bug #21294
openURI.extract is extracting invalid URIs with a mishmash of IPv6 notation with IPv4 address
Status:
Open
Assignee:
-
Target version:
-
ruby -v:
ruby 3.4.3 (2025-04-14 revision d0b7e5b6a0) +PRISM [x86_64-linux]
Description
The following is not a valid URI: http://[127.0.0.1]
. So URI.extract
should not extract it. It seems it is extracting it, though.
So if you have code which extracts all URIs and then parses them, like the following, an error will be raised:
require 'uri'
URI.extract("Fake URL: http://[127.0.0.1]" , :http).each do |uri| # => ['http://[127.0.0.1]']
URI.parse(uri) # => raise URI::InvalidURIError
end
/home/keeyan/.local/share/mise/installs/ruby/3.4.3/lib/ruby/3.4.0/uri/rfc3986_parser.rb:130:in 'URI::RFC3986_Parser#split': bad URI (is not URI?): "http://[127.0.0.1]" (URI::InvalidURIError)
from /home/keeyan/.local/share/mise/installs/ruby/3.4.3/lib/ruby/3.4.0/uri/rfc3986_parser.rb:135:in 'URI::RFC3986_Parser#parse'
from /home/keeyan/.local/share/mise/installs/ruby/3.4.3/lib/ruby/3.4.0/uri/common.rb:212:in 'URI.parse'
from test.rb:4:in 'block in <main>'
from test.rb:3:in 'Array#each'
from test.rb:3:in '<main>'
Instead, I believe URI.extract
, should return an empty array.
Actions
Like0
Like0Like0