From b757ff3ef6659ef959a58d15f345f97e19697731 Mon Sep 17 00:00:00 2001 From: naruse Date: Sun, 22 Jun 2014 00:23:52 +0000 Subject: * lib/uri/rfc3986_parser.rb: raise exception when given a URI string has non ASCII. It is to keep the regexp compiled for US-ASCII. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/uri/rfc3986_parser.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib') diff --git a/lib/uri/rfc3986_parser.rb b/lib/uri/rfc3986_parser.rb index 779693c80c..cd95ab8860 100644 --- a/lib/uri/rfc3986_parser.rb +++ b/lib/uri/rfc3986_parser.rb @@ -6,6 +6,10 @@ module URI RFC3986_relative_ref = /\A(?(?\/\/(?(?:(?(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*)@)?(?(?\[(?(?:\h{1,4}:){6}(?\h{1,4}:\h{1,4}|(?(?[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g\.\g\.\g))|::(?:\h{1,4}:){5}\g|\h{1,4}?::(?:\h{1,4}:){4}\g|(?:(?:\h{1,4}:){,1}\h{1,4})?::(?:\h{1,4}:){3}\g|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?v\h+\.[!$&-.0-;=A-Z_a-z~]+)\])|\g|(?(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])+))?(?::(?\d*))?)(?(?:\/(?(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*))*)|(?\/(?:(?(?:%\h\h|[!$&-.0-;=@-Z_a-z~])+)(?:\/\g)*)?)|(?(?(?:%\h\h|[!$&-.0-9;=@-Z_a-z~])+)(?:\/\g)*)|(?(?:%\h\h|[!$&-.0-;=@-Z_a-z~]){0}))(?:\?(?(?:%\h\h|[!$&-.0-;=@-Z_a-z~]|[\/?])*))?(?:\#(?(?:%\h\h|[!$&-.0-;=@-Z_a-z~]|[\/?])*))?)\z/ def split(uri) #:nodoc: + uri = uri.to_str + unless uri.ascii_only? + raise InvalidURIError, "URI must be ascii only #{uri.dump}" + end if m = RFC3986_URI.match(uri) ary = [] ary << m["scheme"] -- cgit v1.2.3