Cache digest fetches have been sending the cache_peer login= option
value without sanitizing it for special-case values used internally
by Squid. This causes authentication failure on peers which are checking
user credentials.
req->header.putStr(HDR_ACCEPT, "text/html");
- if (p->login)
+ if (p->login &&
+ p->login[0] != '*' &&
+ strcmp(p->login, "PASS") != 0 &&
+ strcmp(p->login, "PASSTHRU") != 0 &&
+ strcmp(p->login, "NEGOTIATE") != 0 &&
+ strcmp(p->login, "PROXYPASS") != 0) {
xstrncpy(req->login, p->login, MAX_LOGIN_SZ);
-
+ }
/* create fetch state structure */
CBDATA_INIT_TYPE(DigestFetchState);