[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.
2.4 backport candidate, probably.
diff --git a/Lib/urllib.py b/Lib/urllib.py
index 8d56690..064632c 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -302,13 +302,13 @@
if proxy_passwd:
import base64
- proxy_auth = base64.encodestring(proxy_passwd).strip()
+ proxy_auth = base64.b64encode(proxy_passwd).strip()
else:
proxy_auth = None
if user_passwd:
import base64
- auth = base64.encodestring(user_passwd).strip()
+ auth = base64.b64encode(user_passwd).strip()
else:
auth = None
h = httplib.HTTP(host)
@@ -387,12 +387,12 @@
if not host: raise IOError, ('https error', 'no host given')
if proxy_passwd:
import base64
- proxy_auth = base64.encodestring(proxy_passwd).strip()
+ proxy_auth = base64.b64encode(proxy_passwd).strip()
else:
proxy_auth = None
if user_passwd:
import base64
- auth = base64.encodestring(user_passwd).strip()
+ auth = base64.b64encode(user_passwd).strip()
else:
auth = None
h = httplib.HTTPS(host, 0,