summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--lib/uri/ftp.rb1
-rw-r--r--test/uri/test_ftp.rb4
3 files changed, 10 insertions, 0 deletions
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 <naruse@ruby-lang.org>
+
+ * 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 <luislavena@gmail.com>
* 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.