]> granicus.if.org Git - python/commitdiff
Issue #2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls
authorBerker Peksag <berker.peksag@gmail.com>
Sun, 6 Mar 2016 14:27:23 +0000 (16:27 +0200)
committerBerker Peksag <berker.peksag@gmail.com>
Sun, 6 Mar 2016 14:27:23 +0000 (16:27 +0200)
Raise ValueError if algorithm is not MD5 or SHA.

Initial patch by Mathieu Dupuy.

Lib/test/test_urllib2.py
Lib/urllib2.py
Misc/NEWS

index 5a631b3a5738da904e2a6d0e69d6553d5476d57f..a6889cc619c947713a987b0d2f1440e64ffdc4d6 100644 (file)
@@ -6,7 +6,7 @@ import socket
 import StringIO
 
 import urllib2
-from urllib2 import Request, OpenerDirector
+from urllib2 import Request, OpenerDirector, AbstractDigestAuthHandler
 
 try:
     import ssl
@@ -1290,6 +1290,16 @@ class MiscTests(unittest.TestCase):
         else:
             self.assertTrue(False)
 
+    def test_unsupported_algorithm(self):
+        handler = AbstractDigestAuthHandler()
+        with self.assertRaises(ValueError) as exc:
+            handler.get_algorithm_impls('invalid')
+        self.assertEqual(
+            str(exc.exception),
+            "Unsupported digest authentication algorithm 'invalid'"
+        )
+
+
 class RequestTests(unittest.TestCase):
 
     def setUp(self):
index 8ec5e2aefed9d05ab1c5711598f6da2df6c1fa35..93a3350a867b4fd642beb1ea7df9f02228c85638 100644 (file)
@@ -1071,6 +1071,9 @@ class AbstractDigestAuthHandler:
         elif algorithm == 'SHA':
             H = lambda x: hashlib.sha1(x).hexdigest()
         # XXX MD5-sess
+        else:
+            raise ValueError("Unsupported digest authentication "
+                             "algorithm %r" % algorithm.lower())
         KD = lambda s, d: H("%s:%s" % (s, d))
         return H, KD
 
index 5308a1239a36106824684a488f714ac0a51ed75b..a89afa17376ec8b71bc7c1cd291b52e5e7cae2f9 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -55,6 +55,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #2202: Fix UnboundLocalError in
+  AbstractDigestAuthHandler.get_algorithm_impls.  Initial patch by Mathieu Dupuy.
+
 - Issue #26475: Fixed debugging output for regular expressions with the (?x)
   flag.