diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/uri/common.rb | 20 | ||||
-rw-r--r-- | test/uri/test_generic.rb | 1 |
3 files changed, 16 insertions, 10 deletions
@@ -1,3 +1,8 @@ +Thu Jan 5 11:47:54 2012 NARUSE, Yui <naruse@ruby-lang.org> + + * lib/uri/common.rb (URI::Parser#initialize_regexp): + use \A \z instead of ^ $. [Bug #5843] + Wed Jan 4 17:55:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com> * array.c (rb_ary_sample): add example for Array#sample diff --git a/lib/uri/common.rb b/lib/uri/common.rb index 5c5fc0c2e2..90e655936d 100644 --- a/lib/uri/common.rb +++ b/lib/uri/common.rb @@ -514,16 +514,16 @@ module URI ret[:UNSAFE] = Regexp.new("[^#{pattern[:UNRESERVED]}#{pattern[:RESERVED]}]") # for Generic#initialize - ret[:SCHEME] = Regexp.new("^#{pattern[:SCHEME]}$") - ret[:USERINFO] = Regexp.new("^#{pattern[:USERINFO]}$") - ret[:HOST] = Regexp.new("^#{pattern[:HOST]}$") - ret[:PORT] = Regexp.new("^#{pattern[:PORT]}$") - ret[:OPAQUE] = Regexp.new("^#{pattern[:OPAQUE_PART]}$") - ret[:REGISTRY] = Regexp.new("^#{pattern[:REG_NAME]}$") - ret[:ABS_PATH] = Regexp.new("^#{pattern[:ABS_PATH]}$") - ret[:REL_PATH] = Regexp.new("^#{pattern[:REL_PATH]}$") - ret[:QUERY] = Regexp.new("^#{pattern[:QUERY]}$") - ret[:FRAGMENT] = Regexp.new("^#{pattern[:FRAGMENT]}$") + ret[:SCHEME] = Regexp.new("\\A#{pattern[:SCHEME]}\\z") + ret[:USERINFO] = Regexp.new("\\A#{pattern[:USERINFO]}\\z") + ret[:HOST] = Regexp.new("\\A#{pattern[:HOST]}\\z") + ret[:PORT] = Regexp.new("\\A#{pattern[:PORT]}\\z") + ret[:OPAQUE] = Regexp.new("\\A#{pattern[:OPAQUE_PART]}\\z") + ret[:REGISTRY] = Regexp.new("\\A#{pattern[:REG_NAME]}\\z") + ret[:ABS_PATH] = Regexp.new("\\A#{pattern[:ABS_PATH]}\\z") + ret[:REL_PATH] = Regexp.new("\\A#{pattern[:REL_PATH]}\\z") + ret[:QUERY] = Regexp.new("\\A#{pattern[:QUERY]}\\z") + ret[:FRAGMENT] = Regexp.new("\\A#{pattern[:FRAGMENT]}\\z") ret end diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb index cfd92e7b26..2c9bdd00fa 100644 --- a/test/uri/test_generic.rb +++ b/test/uri/test_generic.rb @@ -692,6 +692,7 @@ class URI::TestGeneric < Test::Unit::TestCase uri = URI.parse('http://example.com') assert_raise(URI::InvalidURIError) { uri.password = 'bar' } + assert_raise(URI::InvalidComponentError) { uri.query = "foo\nbar" } uri.userinfo = 'foo:bar' assert_equal('http://foo:bar@example.com', uri.to_s) assert_raise(URI::InvalidURIError) { uri.registry = 'bar' } |