(original) (raw)

changeset: 74548:514994d7a9f2 branch: 3.2 parent: 74542:76077971ee1f user: Senthil Kumaran senthil@uthcode.com date: Sat Jan 21 11:52:48 2012 +0800 files: Lib/test/test_urllib.py Lib/test/test_urllib2net.py Lib/urllib/request.py Misc/NEWS description: Fix Issue6631 - Disallow relative file paths in urllib urlopen diff -r 76077971ee1f -r 514994d7a9f2 Lib/test/test_urllib.py --- a/Lib/test/test_urllib.py Fri Jan 20 15:53:10 2012 +0100 +++ b/Lib/test/test_urllib.py Sat Jan 21 11:52:48 2012 +0800 @@ -160,6 +160,9 @@ for line in self.returned_obj: self.assertEqual(line, self.text) + def test_relativelocalfile(self): + self.assertRaises(ValueError,urllib.request.urlopen,'./' + self.pathname) + class ProxyTests(unittest.TestCase): def setUp(self): diff -r 76077971ee1f -r 514994d7a9f2 Lib/test/test_urllib2net.py --- a/Lib/test/test_urllib2net.py Fri Jan 20 15:53:10 2012 +0100 +++ b/Lib/test/test_urllib2net.py Sat Jan 21 11:52:48 2012 +0800 @@ -125,6 +125,8 @@ finally: os.remove(TESTFN) + self.assertRaises(ValueError, urllib.request.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 -r 76077971ee1f -r 514994d7a9f2 Lib/urllib/request.py --- a/Lib/urllib/request.py Fri Jan 20 15:53:10 2012 +0100 +++ b/Lib/urllib/request.py Sat Jan 21 11:52:48 2012 +0800 @@ -1781,6 +1781,8 @@ 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) raise URLError('local file error', 'not on local host') diff -r 76077971ee1f -r 514994d7a9f2 Misc/NEWS --- a/Misc/NEWS Fri Jan 20 15:53:10 2012 +0100 +++ b/Misc/NEWS Sat Jan 21 11:52:48 2012 +0800 @@ -103,6 +103,8 @@ Library ------- +- Issue #6631: Disallow relative file paths in urllib urlopen methods. + - Issue #13722: Avoid silencing ImportErrors when initializing the codecs registry. /senthil@uthcode.com