[Python-checkins] cpython (merge 3.5 -> default): Issue #2202: Fix UnboundLocalError in
berker.peksag
python-checkins at python.org
Sun Mar 6 09:17:41 EST 2016
https://hg.python.org/cpython/rev/046c75c9cd33
changeset: 100431:046c75c9cd33
parent: 100429:a8589d88deb4
parent: 100430:22eab50cb585
user: Berker Peksag <berker.peksag at gmail.com>
date: Sun Mar 06 16:17:47 2016 +0200
summary:
Issue #2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls
Raise ValueError if algorithm is not MD5 or SHA.
Initial patch by Mathieu Dupuy.
files:
Lib/test/test_urllib2.py | 12 +++++++++++-
Lib/urllib/request.py | 3 +++
Misc/NEWS | 3 +++
3 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -13,7 +13,8 @@
# 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 @@
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):
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -1171,6 +1171,9 @@
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
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -201,6 +201,9 @@
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.
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list