if (digestauthenticators)
helperShutdown(digestauthenticators);
- httpHeaderDestroyFieldsInfo(DigestFieldsInfo, DIGEST_ENUM_END);
- DigestFieldsInfo = NULL;
+ if (DigestFieldsInfo) {
+ httpHeaderDestroyFieldsInfo(DigestFieldsInfo, DIGEST_ENUM_END);
+ DigestFieldsInfo = NULL;
+ }
authdigest_initialised = 0;
if (strcasecmp(digest_request->response, Response)) {
credentials(Failed);
+ digest_request->flags.invalid_password = 1;
digest_request->setDenyMessage("Incorrect password");
return;
} else {
nlen = ilen;
if (!value.buf()) {
- debugs(29, 9, "authDigestDecodeAuth: Failed to parse attribute '" << temp << "' in '" << proxy_auth << "'");
+ debugs(29, 9, "authDigestDecodeAuth: Failed to parse attribute '" << item << "' in '" << temp << "'");
continue;
}
default:
debugs(29, 3, "authDigestDecodeAuth: Unknown attribute '" << item << "' in '" << temp << "'");
-
+ break;
}
}
return authDigestLogUsername(username, digest_request);
}
+ /* Sanity check of the username.
+ * " can not be allowed in usernames until * the digest helper protocol
+ * have been redone
+ */
+ if (strchr(username, '"')) {
+ debugs(29, 2, "authenticateDigestDecode: Unacceptable username '" << username << "'");
+ return authDigestLogUsername(username, digest_request);
+ }
+
/* do we have a realm ? */
if (!digest_request->realm || digest_request->realm[0] == '\0') {
debugs(29, 2, "authenticateDigestDecode: Empty or not present realm");