Kaydet (Commit) 87640b30 authored tarafından Berker Peksag's avatar Berker Peksag

Issue #2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls

Raise ValueError if algorithm is not MD5 or SHA.

Initial patch by Mathieu Dupuy.
üst 9e00088c
...@@ -6,7 +6,7 @@ import socket ...@@ -6,7 +6,7 @@ import socket
import StringIO import StringIO
import urllib2 import urllib2
from urllib2 import Request, OpenerDirector from urllib2 import Request, OpenerDirector, AbstractDigestAuthHandler
try: try:
import ssl import ssl
...@@ -1290,6 +1290,16 @@ class MiscTests(unittest.TestCase): ...@@ -1290,6 +1290,16 @@ class MiscTests(unittest.TestCase):
else: else:
self.assertTrue(False) 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): class RequestTests(unittest.TestCase):
def setUp(self): def setUp(self):
......
...@@ -1071,6 +1071,9 @@ class AbstractDigestAuthHandler: ...@@ -1071,6 +1071,9 @@ class AbstractDigestAuthHandler:
elif algorithm == 'SHA': elif algorithm == 'SHA':
H = lambda x: hashlib.sha1(x).hexdigest() H = lambda x: hashlib.sha1(x).hexdigest()
# XXX MD5-sess # XXX MD5-sess
else:
raise ValueError("Unsupported digest authentication "
"algorithm %r" % algorithm.lower())
KD = lambda s, d: H("%s:%s" % (s, d)) KD = lambda s, d: H("%s:%s" % (s, d))
return H, KD return H, KD
......
...@@ -55,6 +55,9 @@ Core and Builtins ...@@ -55,6 +55,9 @@ Core and Builtins
Library 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) - Issue #26475: Fixed debugging output for regular expressions with the (?x)
flag. flag.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment