diff options
author | Senthil Kumaran <senthil@uthcode.com> | 2011-05-11 13:17:57 (GMT) |
---|---|---|
committer | Senthil Kumaran <senthil@uthcode.com> | 2011-05-11 13:17:57 (GMT) |
commit | 4de00a2e87ba7c69965ab4edcfcafc9eb63f0a97 (patch) | |
tree | 89f74bcd2b105eeaa6eedd4b8b36ddf379403a2b /Lib/urllib | |
parent | cc99528d872e0f8a87a762a990beb9e3755cbb42 (diff) | |
download | cpython-4de00a2e87ba7c69965ab4edcfcafc9eb63f0a97.zip cpython-4de00a2e87ba7c69965ab4edcfcafc9eb63f0a97.tar.gz cpython-4de00a2e87ba7c69965ab4edcfcafc9eb63f0a97.tar.bz2 |
Fix closes Issue #11799: urllib.request Authentication Handlers will raise a
ValueError when presented with an unsupported Authentication Scheme.
Diffstat (limited to 'Lib/urllib')
-rw-r--r-- | Lib/urllib/request.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index c80b7d1..e98a976 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -825,14 +825,20 @@ class AbstractBasicAuthHandler: self.retried += 1 if authreq: - mo = AbstractBasicAuthHandler.rx.search(authreq) - if mo: - scheme, quote, realm = mo.groups() - if scheme.lower() == 'basic': - response = self.retry_http_basic_auth(host, req, realm) - if response and response.code != 401: - self.retried = 0 - return response + scheme = authreq.split()[0] + if not scheme.lower() == 'basic': + raise ValueError("AbstractBasicAuthHandler does not" + " support the following scheme: '%s'" % + scheme) + else: + mo = AbstractBasicAuthHandler.rx.search(authreq) + if mo: + scheme, quote, realm = mo.groups() + if scheme.lower() == 'basic': + response = self.retry_http_basic_auth(host, req, realm) + if response and response.code != 401: + self.retried = 0 + return response def retry_http_basic_auth(self, host, req, realm): user, pw = self.passwd.find_user_password(realm, host) @@ -918,6 +924,9 @@ class AbstractDigestAuthHandler: scheme = authreq.split()[0] if scheme.lower() == 'digest': return self.retry_http_digest_auth(req, authreq) + elif not scheme.lower() == 'basic': + raise ValueError("AbstractDigestAuthHandler does not support" + " the following scheme: '%s'" % scheme) def retry_http_digest_auth(self, req, auth): token, challenge = auth.split(' ', 1) |