diff --git a/ChangeLog b/ChangeLog index 089d0cf30f..3e1dc9b5ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Aug 30 09:21:01 2012 NARUSE, Yui + + * lib/uri/ftp.rb (URI::FTP#initialize): raise InvalidURIError if "//" + is not present [ruby-core:47344] [Bug #6945] + Thu Aug 30 07:45:12 2012 Luis Lavena * test/ruby/test_file_exhaustive.rb: fix test introduced in r36811 for diff --git a/lib/uri/ftp.rb b/lib/uri/ftp.rb index 26e4bb8326..971684a545 100644 --- a/lib/uri/ftp.rb +++ b/lib/uri/ftp.rb @@ -135,6 +135,7 @@ module URI # +opaque+, +query+ and +fragment+, in that order. # def initialize(*arg) + raise InvalidURIError unless arg[5] arg[5] = arg[5].sub(/^\//,'').sub(/^%2F/,'/') super(*arg) @typecode = nil diff --git a/test/uri/test_ftp.rb b/test/uri/test_ftp.rb index 0d76c4497b..cc6843e60f 100644 --- a/test/uri/test_ftp.rb +++ b/test/uri/test_ftp.rb @@ -27,6 +27,10 @@ class TestFTP < Test::Unit::TestCase assert_equal('pass', url.password) end + def test_parse_invalid + assert_raise(InvalidURIError){URI.parse('ftp:example')} + end + def test_paths # If you think what's below is wrong, please read RubyForge bug 2055, # RFC 1738 section 3.2.2, and RFC 2396.