if (!authenticate)
return;
- int stale = 1;
+ int stale = 0;
if (auth_user_request) {
AuthDigestUserRequest *digest_request;
if (digest_request->cnonce && strlen(digest_request->nc) != 8) {
debugs(29, 4, "authenticateDigestDecode: nonce count length invalid");
- delete digest_request;
return authDigestLogUsername(username, digest_request);
}
if (digest_request->qop && strcmp(digest_request->qop, QOP_AUTH) != 0) {
/* we received a qop option we didn't send */
debugs(29, 4, "authenticateDigestDecode: Invalid qop option received");
- delete digest_request;
return authDigestLogUsername(username, digest_request);
}
if (!digest_request->response || strlen(digest_request->response) != 32) {
debugs(29, 4, "authenticateDigestDecode: Response length invalid");
- delete digest_request;
return authDigestLogUsername(username, digest_request);
}
/* do we have a username ? */
if (!username || username[0] == '\0') {
debugs(29, 4, "authenticateDigestDecode: Empty or not present username");
- delete digest_request;
return authDigestLogUsername(username, digest_request);
}
/* check that we're not being hacked / the username hasn't changed */
if (nonce->user && strcmp(username, nonce->user->username())) {
debugs(29, 4, "authenticateDigestDecode: Username for the nonce does not equal the username for the request");
- delete digest_request;
return authDigestLogUsername(username, digest_request);
}
if ((digest_request->qop && !digest_request->cnonce)
|| (!digest_request->qop && digest_request->cnonce)) {
debugs(29, 4, "authenticateDigestDecode: qop without cnonce, or vice versa!");
- delete digest_request;
return authDigestLogUsername(username, digest_request);
}
else if (strcmp(digest_request->algorithm, "MD5")
&& strcmp(digest_request->algorithm, "MD5-sess")) {
debugs(29, 4, "authenticateDigestDecode: invalid algorithm specified!");
- delete digest_request;
return authDigestLogUsername(username, digest_request);
}