summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/http/http_auth.cc6
-rw-r--r--net/http/http_auth_unittest.cc7
2 files changed, 12 insertions, 1 deletions
diff --git a/net/http/http_auth.cc b/net/http/http_auth.cc
index d65fb4e..ce3e110 100644
--- a/net/http/http_auth.cc
+++ b/net/http/http_auth.cc
@@ -55,8 +55,12 @@ void HttpAuth::CreateAuthHandler(const std::string& challenge,
scoped_refptr<HttpAuthHandler>* handler) {
// Find the right auth handler for the challenge's scheme.
ChallengeTokenizer props(challenge.begin(), challenge.end());
- scoped_refptr<HttpAuthHandler> tmp_handler;
+ if (!props.valid()) {
+ *handler = NULL;
+ return;
+ }
+ scoped_refptr<HttpAuthHandler> tmp_handler;
if (LowerCaseEqualsASCII(props.scheme(), "basic")) {
tmp_handler = new HttpAuthHandlerBasic();
} else if (LowerCaseEqualsASCII(props.scheme(), "digest")) {
diff --git a/net/http/http_auth_unittest.cc b/net/http/http_auth_unittest.cc
index 0599246..9bd750e 100644
--- a/net/http/http_auth_unittest.cc
+++ b/net/http/http_auth_unittest.cc
@@ -39,6 +39,13 @@ TEST(HttpAuthTest, ChooseBestChallenge) {
// Pick Digset over Basic
"DigestRealm",
+ },
+ {
+ "Y: Digest realm=\"X\", nonce=\"aaaaaaaaaa\"\n"
+ "www-authenticate:\n",
+
+ // Handle null header value.
+ "",
}
};