changeset: 100432:d135799e952b branch: 2.7 parent: 100428:8554423dd392 user: Berker Peksag date: Sun Mar 06 16:27:23 2016 +0200 files: Lib/test/test_urllib2.py Lib/urllib2.py Misc/NEWS description: Issue #2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls Raise ValueError if algorithm is not MD5 or SHA. Initial patch by Mathieu Dupuy. diff -r 8554423dd392 -r d135799e952b Lib/test/test_urllib2.py --- a/Lib/test/test_urllib2.py Sun Mar 06 15:03:16 2016 +0200 +++ b/Lib/test/test_urllib2.py Sun Mar 06 16:27:23 2016 +0200 @@ -6,7 +6,7 @@ import StringIO import urllib2 -from urllib2 import Request, OpenerDirector +from urllib2 import Request, OpenerDirector, AbstractDigestAuthHandler try: import ssl @@ -1290,6 +1290,16 @@ 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): diff -r 8554423dd392 -r d135799e952b Lib/urllib2.py --- a/Lib/urllib2.py Sun Mar 06 15:03:16 2016 +0200 +++ b/Lib/urllib2.py Sun Mar 06 16:27:23 2016 +0200 @@ -1071,6 +1071,9 @@ 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 diff -r 8554423dd392 -r d135799e952b Misc/NEWS --- a/Misc/NEWS Sun Mar 06 15:03:16 2016 +0200 +++ b/Misc/NEWS Sun Mar 06 16:27:23 2016 +0200 @@ -55,6 +55,9 @@ 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.