From 87fe4480919baaa9f0a37b9444912bae98220395 Mon Sep 17 00:00:00 2001 From: naruse Date: Thu, 5 Jan 2012 02:57:21 +0000 Subject: [PATCH] * lib/uri/common.rb (URI::Parser#initialize_regexp): use \A \z instead of ^ $. [Bug #5843] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ lib/uri/common.rb | 20 ++++++++++---------- test/uri/test_generic.rb | 1 + 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4adfbd988d..02f1cfa1a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 5 11:47:54 2012 NARUSE, Yui + + * lib/uri/common.rb (URI::Parser#initialize_regexp): + use \A \z instead of ^ $. [Bug #5843] + Wed Jan 4 17:55:53 2012 Ayumu AIZAWA * 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' }