Kaydet (Commit) 98b1c826 authored tarafından Xiang Zhang's avatar Xiang Zhang

Issue #29142: Fix suffixes in no_proxy handling in urllib.

In urllib, suffixes in no_proxy environment variable with
leading dots could match related hostnames again (e.g. .b.c matches a.b.c).
Patch by Milan Oberkirch.
üst 7bdb5160
...@@ -185,11 +185,12 @@ class ProxyTests(unittest.TestCase): ...@@ -185,11 +185,12 @@ class ProxyTests(unittest.TestCase):
def test_proxy_bypass_environment_host_match(self): def test_proxy_bypass_environment_host_match(self):
bypass = urllib.proxy_bypass_environment bypass = urllib.proxy_bypass_environment
self.env.set('NO_PROXY', self.env.set('NO_PROXY',
'localhost, anotherdomain.com, newdomain.com:1234') 'localhost, anotherdomain.com, newdomain.com:1234, .d.o.t')
self.assertTrue(bypass('localhost')) self.assertTrue(bypass('localhost'))
self.assertTrue(bypass('LocalHost')) # MixedCase self.assertTrue(bypass('LocalHost')) # MixedCase
self.assertTrue(bypass('LOCALHOST')) # UPPERCASE self.assertTrue(bypass('LOCALHOST')) # UPPERCASE
self.assertTrue(bypass('newdomain.com:1234')) self.assertTrue(bypass('newdomain.com:1234'))
self.assertTrue(bypass('foo.d.o.t')) # issue 29142
self.assertTrue(bypass('anotherdomain.com:8888')) self.assertTrue(bypass('anotherdomain.com:8888'))
self.assertTrue(bypass('www.newdomain.com:1234')) self.assertTrue(bypass('www.newdomain.com:1234'))
self.assertFalse(bypass('prelocalhost')) self.assertFalse(bypass('prelocalhost'))
......
...@@ -1427,6 +1427,7 @@ def proxy_bypass_environment(host, proxies=None): ...@@ -1427,6 +1427,7 @@ def proxy_bypass_environment(host, proxies=None):
no_proxy_list = [proxy.strip() for proxy in no_proxy.split(',')] no_proxy_list = [proxy.strip() for proxy in no_proxy.split(',')]
for name in no_proxy_list: for name in no_proxy_list:
if name: if name:
name = name.lstrip('.') # ignore leading dots
name = re.escape(name) name = re.escape(name)
pattern = r'(.+\.)?%s$' % name pattern = r'(.+\.)?%s$' % name
if (re.match(pattern, hostonly, re.I) if (re.match(pattern, hostonly, re.I)
......
...@@ -23,6 +23,10 @@ Extension Modules ...@@ -23,6 +23,10 @@ Extension Modules
Library Library
------- -------
- Issue #29142: In urllib, suffixes in no_proxy environment variable with
leading dots could match related hostnames again (e.g. .b.c matches a.b.c).
Patch by Milan Oberkirch.
- Issue #29094: Offsets in a ZIP file created with extern file object and mode - Issue #29094: Offsets in a ZIP file created with extern file object and mode
"w" now are relative to the start of the file. "w" now are relative to the start of the file.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment