]> granicus.if.org Git - python/commitdiff
Issue #12541: Be lenient with quotes around Realm field of HTTP Basic Authentation...
authorSenthil Kumaran <senthil@uthcode.com>
Tue, 15 May 2012 14:30:25 +0000 (22:30 +0800)
committerSenthil Kumaran <senthil@uthcode.com>
Tue, 15 May 2012 14:30:25 +0000 (22:30 +0800)
 G: changed Misc/NEWS

Lib/test/test_urllib2.py
Lib/urllib/request.py
Misc/NEWS

index 3d80e0140b9be1b19229773e9b49686f74a5cf0c..911a0af9ecf71d48dc36cb96729e53470f400ac0 100644 (file)
@@ -1218,6 +1218,21 @@ class HandlerTests(unittest.TestCase):
     def test_basic_auth_with_single_quoted_realm(self):
         self.test_basic_auth(quote_char="'")
 
+    def test_basic_auth_with_unquoted_realm(self):
+        opener = OpenerDirector()
+        password_manager = MockPasswordManager()
+        auth_handler = urllib.request.HTTPBasicAuthHandler(password_manager)
+        realm = "ACME Widget Store"
+        http_handler = MockHTTPHandler(
+            401, 'WWW-Authenticate: Basic realm=%s\r\n\r\n' % realm)
+        opener.add_handler(auth_handler)
+        opener.add_handler(http_handler)
+        self._test_basic_auth(opener, auth_handler, "Authorization",
+                              realm, http_handler, password_manager,
+                              "http://acme.example.com/protected",
+                              "http://acme.example.com/protected",
+                              )
+
     def test_proxy_basic_auth(self):
         opener = OpenerDirector()
         ph = urllib.request.ProxyHandler(dict(http="proxy.example.com:3128"))
index fe2cfcdbbef6117ccc1f83b9c6106844d16e05e7..cbcbe1ae373cc0535e430d69601e07bf8207ede6 100644 (file)
@@ -794,7 +794,7 @@ class AbstractBasicAuthHandler:
     # allow for double- and single-quoted realm values
     # (single quotes are a violation of the RFC, but appear in the wild)
     rx = re.compile('(?:.*,)*[ \t]*([^ \t]+)[ \t]+'
-                    'realm=(["\'])(.*?)\\2', re.I)
+                    'realm=(["\']?)([^"\']*)\\2', re.I)
 
     # XXX could pre-emptively send auth info already accepted (RFC 2617,
     # end of section 2, and section 1.2 immediately after "credentials"
index 10b5453b03fc932ad8308f52fb263a4c8ecfb85d..f3b14b3d4093b3792af65aae9867636251f3c6e1 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -63,6 +63,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #12541: Be lenient with quotes around Realm field of HTTP Basic
+  Authentation in urllib2.
+
 - Issue #14662: Prevent shutil failures on OS X when destination does not
   support chflag operations.  Patch by Hynek Schlawack.