Skip to content

Commit e88dd1c

Browse files
committed
Issue #2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls
Raise ValueError if algorithm is not MD5 or SHA. Initial patch by Mathieu Dupuy.
1 parent 8cc859c commit e88dd1c

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

Lib/test/test_urllib2.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
# proxy config data structure but is testable on all platforms.
1414
from urllib.request import (Request, OpenerDirector, HTTPBasicAuthHandler,
1515
HTTPPasswordMgrWithPriorAuth, _parse_proxy,
16-
_proxy_bypass_macosx_sysconf)
16+
_proxy_bypass_macosx_sysconf,
17+
AbstractDigestAuthHandler)
1718
from urllib.parse import urlparse
1819
import urllib.error
1920
import http.client
@@ -1680,6 +1681,15 @@ def test_parse_proxy(self):
16801681

16811682
self.assertRaises(ValueError, _parse_proxy, 'file:/ftp.example.com'),
16821683

1684+
def test_unsupported_algorithm(self):
1685+
handler = AbstractDigestAuthHandler()
1686+
with self.assertRaises(ValueError) as exc:
1687+
handler.get_algorithm_impls('invalid')
1688+
self.assertEqual(
1689+
str(exc.exception),
1690+
"Unsupported digest authentication algorithm 'invalid'"
1691+
)
1692+
16831693

16841694
class RequestTests(unittest.TestCase):
16851695
class PutRequest(Request):

Lib/urllib/request.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,9 @@ def get_algorithm_impls(self, algorithm):
11111111
elif algorithm == 'SHA':
11121112
H = lambda x: hashlib.sha1(x.encode("ascii")).hexdigest()
11131113
# XXX MD5-sess
1114+
else:
1115+
raise ValueError("Unsupported digest authentication "
1116+
"algorithm %r" % algorithm)
11141117
KD = lambda s, d: H("%s:%s" % (s, d))
11151118
return H, KD
11161119

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ Core and Builtins
9191
Library
9292
-------
9393

94+
- Issue #2202: Fix UnboundLocalError in
95+
AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.
96+
9497
- Issue #25718: Fixed pickling and copying the accumulate() iterator with
9598
total is None.
9699

0 commit comments

Comments
 (0)