summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--lib/uri/generic.rb1
-rw-r--r--test/uri/test_generic.rb1
3 files changed, 7 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d9afa329f..962c2db126 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jul 24 19:49:54 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (find_proxy): raise BadURIError if the URI is
+ a relative URI. [Bug #8645]
+
Wed Jul 24 18:56:06 2013 Koichi Sasada <ko1@atdot.net>
* vm_insnhelper.c (vm_expandarray): use RARRAY_RAWPTR() instead of
diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
index 1d8963af4d..387682b5b5 100644
--- a/lib/uri/generic.rb
+++ b/lib/uri/generic.rb
@@ -1611,6 +1611,7 @@ module URI
# http_proxy is not used too if the variable is case insensitive.
# CGI_HTTP_PROXY can be used instead.
def find_proxy
+ raise BadURIError, "relative URI: #{self}" if self.relative?
name = self.scheme.downcase + '_proxy'
proxy_uri = nil
if name == 'http_proxy' && ENV.include?('REQUEST_METHOD') # CGI?
diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb
index 2d4603ca44..d22d3c1dd6 100644
--- a/test/uri/test_generic.rb
+++ b/test/uri/test_generic.rb
@@ -736,6 +736,7 @@ class URI::TestGeneric < Test::Unit::TestCase
# 192.0.2.0/24 is TEST-NET. [RFC3330]
def test_find_proxy
+ assert_raise(URI::BadURIError){ URI("foo").find_proxy }
with_env({}) {
assert_nil(URI("http://192.0.2.1/").find_proxy)
assert_nil(URI("ftp://192.0.2.1/").find_proxy)