Issue #2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls
Raise ValueError if algorithm is not MD5 or SHA. Initial patch by Mathieu Dupuy.
This commit is contained in:
commit
48238c7e37
|
@ -13,7 +13,8 @@ import urllib.request
|
|||
# proxy config data structure but is testable on all platforms.
|
||||
from urllib.request import (Request, OpenerDirector, HTTPBasicAuthHandler,
|
||||
HTTPPasswordMgrWithPriorAuth, _parse_proxy,
|
||||
_proxy_bypass_macosx_sysconf)
|
||||
_proxy_bypass_macosx_sysconf,
|
||||
AbstractDigestAuthHandler)
|
||||
from urllib.parse import urlparse
|
||||
import urllib.error
|
||||
import http.client
|
||||
|
@ -1680,6 +1681,15 @@ class MiscTests(unittest.TestCase):
|
|||
|
||||
self.assertRaises(ValueError, _parse_proxy, 'file:/ftp.example.com'),
|
||||
|
||||
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):
|
||||
class PutRequest(Request):
|
||||
|
|
|
@ -1171,6 +1171,9 @@ class AbstractDigestAuthHandler:
|
|||
elif algorithm == 'SHA':
|
||||
H = lambda x: hashlib.sha1(x.encode("ascii")).hexdigest()
|
||||
# XXX MD5-sess
|
||||
else:
|
||||
raise ValueError("Unsupported digest authentication "
|
||||
"algorithm %r" % algorithm)
|
||||
KD = lambda s, d: H("%s:%s" % (s, d))
|
||||
return H, KD
|
||||
|
||||
|
|
|
@ -201,6 +201,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #2202: Fix UnboundLocalError in
|
||||
AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.
|
||||
|
||||
- Issue #26167: Minimized overhead in copy.copy() and copy.deepcopy().
|
||||
Optimized copying and deepcopying bytearrays, NotImplemented, slices,
|
||||
short lists, tuples, dicts, sets.
|
||||
|
|
Loading…
Reference in New Issue