From: "Keeyan (Keeyan Nejad) via ruby-core" Date: 2025-04-29T16:12:41+00:00 Subject: [ruby-core:121772] [Ruby Bug#21294] URI.extract is extracting invalid URIs with a mishmash of IPv6 notation with IPv4 address Issue #21294 has been reported by Keeyan (Keeyan Nejad). ---------------------------------------- Bug #21294: URI.extract is extracting invalid URIs with a mishmash of IPv6 notation with IPv4 address https://bugs.ruby-lang.org/issues/21294 * 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
' from test.rb:3:in 'Array#each' from test.rb:3:in '
' ``` 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/