[ruby-core:121779] [Ruby Bug#21294] URI.extract is extracting invalid URIs with a mishmash of IPv6 notation with IPv4 address
From:
"Keeyan (Keeyan Nejad) via ruby-core" <ruby-core@...>
Date:
2025-04-30 07:58:55 UTC
List:
ruby-core #121779
Issue #21294 has been updated by Keeyan (Keeyan Nejad).
Ah thank you @mame! I wasn't aware it was obsolete. We can use `URI::RFC2396_PARSER` for our cases. Do you happen to know why `extract` is not being included in the newer parses? I had a look at the relevant PRs for in the URI repo, but couldn't find anything explaining the reasoning.
----------------------------------------
Bug #21294: URI.extract is extracting invalid URIs with a mishmash of IPv6 notation with IPv4 address
https://bugs.ruby-lang.org/issues/21294#change-112835
* Author: Keeyan (Keeyan Nejad)
* Status: Open
* ruby -v: ruby 3.4.3 (2025-04-14 revision d0b7e5b6a0) +PRISM [x86_64-linux]
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
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:
``` ruby
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.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/