diff options
author | Senthil Kumaran <senthil@uthcode.com> | 2012-01-21 03:43:02 (GMT) |
---|---|---|
committer | Senthil Kumaran <senthil@uthcode.com> | 2012-01-21 03:43:02 (GMT) |
commit | 58c60620689cac234fa8e860412e3d7af354c776 (patch) | |
tree | ffe6fc517e6c3cd1e8dc8937feb7e2d8e3d27a35 | |
parent | 631c25800068ce8f1d97157fd4d173a82ba32e62 (diff) | |
download | cpython-58c60620689cac234fa8e860412e3d7af354c776.zip cpython-58c60620689cac234fa8e860412e3d7af354c776.tar.gz cpython-58c60620689cac234fa8e860412e3d7af354c776.tar.bz2 |
Fix Issue6631 - Disallow relative files paths in urllib*.open()
-rw-r--r-- | Lib/test/test_urllib.py | 3 | ||||
-rw-r--r-- | Lib/test/test_urllib2net.py | 2 | ||||
-rw-r--r-- | Lib/urllib.py | 2 |
3 files changed, 7 insertions, 0 deletions
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index 085eecf..91aeb2f 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -134,6 +134,9 @@ class urlopen_FileTests(unittest.TestCase): for line in self.returned_obj.__iter__(): self.assertEqual(line, self.text) + def test_relativelocalfile(self): + self.assertRaises(ValueError,urllib.urlopen,'./' + self.pathname) + class ProxyTests(unittest.TestCase): def setUp(self): diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py index bd2c467..dcdbfe8 100644 --- a/Lib/test/test_urllib2net.py +++ b/Lib/test/test_urllib2net.py @@ -126,6 +126,8 @@ class OtherNetworkTests(unittest.TestCase): finally: os.remove(TESTFN) + self.assertRaises(ValueError, urllib2.urlopen,'./relative_path/to/file') + # XXX Following test depends on machine configurations that are internal # to CNRI. Need to set up a public server with the right authentication # configuration for test purposes. diff --git a/Lib/urllib.py b/Lib/urllib.py index c7af8ec..a73c5d7 100644 --- a/Lib/urllib.py +++ b/Lib/urllib.py @@ -484,6 +484,8 @@ class URLopener: urlfile = file if file[:1] == '/': urlfile = 'file://' + file + elif file[:2] == './': + raise ValueError("local file url may start with / or file:. Unknown url of type: %s" % url) return addinfourl(open(localname, 'rb'), headers, urlfile) host, port = splitport(host) |