24 lines
1.1 KiB
Diff
24 lines
1.1 KiB
Diff
|
diff --git a/src/auth/digest/Config.cc b/src/auth/digest/Config.cc
|
||
|
index 6a9736f..0a883fa 100644
|
||
|
--- a/src/auth/digest/Config.cc
|
||
|
+++ b/src/auth/digest/Config.cc
|
||
|
@@ -847,11 +847,15 @@ Auth::Digest::Config::decode(char const *proxy_auth, const char *aRequestRealm)
|
||
|
break;
|
||
|
|
||
|
case DIGEST_NC:
|
||
|
- if (value.size() != 8) {
|
||
|
+ if (value.size() == 8) {
|
||
|
+ // for historical reasons, the nc value MUST be exactly 8 bytes
|
||
|
+ static_assert(sizeof(digest_request->nc) == 8 + 1, "bad nc buffer size");
|
||
|
+ xstrncpy(digest_request->nc, value.rawBuf(), value.size() + 1);
|
||
|
+ debugs(29, 9, "Found noncecount '" << digest_request->nc << "'");
|
||
|
+ } else {
|
||
|
debugs(29, 9, "Invalid nc '" << value << "' in '" << temp << "'");
|
||
|
+ digest_request->nc[0] = 0;
|
||
|
}
|
||
|
- xstrncpy(digest_request->nc, value.rawBuf(), value.size() + 1);
|
||
|
- debugs(29, 9, "Found noncecount '" << digest_request->nc << "'");
|
||
|
break;
|
||
|
|
||
|
case DIGEST_CNONCE:
|