Kaydet (Commit) 872dba42 authored tarafından Andrew M. Kuchling's avatar Andrew M. Kuchling

[Patch #1574068 by Scott Dial] urllib and urllib2 were using

base64.encodestring() for encoding authentication data.
encodestring() can include newlines for very long input, which
produced broken HTTP headers.
üst 6d72b0e1
...@@ -302,13 +302,13 @@ class URLopener: ...@@ -302,13 +302,13 @@ class URLopener:
if proxy_passwd: if proxy_passwd:
import base64 import base64
proxy_auth = base64.encodestring(proxy_passwd).strip() proxy_auth = base64.b64encode(proxy_passwd).strip()
else: else:
proxy_auth = None proxy_auth = None
if user_passwd: if user_passwd:
import base64 import base64
auth = base64.encodestring(user_passwd).strip() auth = base64.b64encode(user_passwd).strip()
else: else:
auth = None auth = None
h = httplib.HTTP(host) h = httplib.HTTP(host)
...@@ -387,12 +387,12 @@ class URLopener: ...@@ -387,12 +387,12 @@ class URLopener:
if not host: raise IOError, ('https error', 'no host given') if not host: raise IOError, ('https error', 'no host given')
if proxy_passwd: if proxy_passwd:
import base64 import base64
proxy_auth = base64.encodestring(proxy_passwd).strip() proxy_auth = base64.b64encode(proxy_passwd).strip()
else: else:
proxy_auth = None proxy_auth = None
if user_passwd: if user_passwd:
import base64 import base64
auth = base64.encodestring(user_passwd).strip() auth = base64.b64encode(user_passwd).strip()
else: else:
auth = None auth = None
h = httplib.HTTPS(host, 0, h = httplib.HTTPS(host, 0,
......
...@@ -674,7 +674,7 @@ class ProxyHandler(BaseHandler): ...@@ -674,7 +674,7 @@ class ProxyHandler(BaseHandler):
proxy_type = orig_type proxy_type = orig_type
if user and password: if user and password:
user_pass = '%s:%s' % (unquote(user), unquote(password)) user_pass = '%s:%s' % (unquote(user), unquote(password))
creds = base64.encodestring(user_pass).strip() creds = base64.b64encode(user_pass).strip()
req.add_header('Proxy-authorization', 'Basic ' + creds) req.add_header('Proxy-authorization', 'Basic ' + creds)
hostport = unquote(hostport) hostport = unquote(hostport)
req.set_proxy(hostport, proxy_type) req.set_proxy(hostport, proxy_type)
...@@ -798,7 +798,7 @@ class AbstractBasicAuthHandler: ...@@ -798,7 +798,7 @@ class AbstractBasicAuthHandler:
user, pw = self.passwd.find_user_password(realm, host) user, pw = self.passwd.find_user_password(realm, host)
if pw is not None: if pw is not None:
raw = "%s:%s" % (user, pw) raw = "%s:%s" % (user, pw)
auth = 'Basic %s' % base64.encodestring(raw).strip() auth = 'Basic %s' % base64.b64encode(raw).strip()
if req.headers.get(self.auth_header, None) == auth: if req.headers.get(self.auth_header, None) == auth:
return None return None
req.add_header(self.auth_header, auth) req.add_header(self.auth_header, auth)
......
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