When we receive a CHAP81 challenge response, we always expect the last

byte of the packet to contain '\0'.

Windows 98 gets this wrong, dropping garbage into the last byte and
failing authentication.

Now, we notice this and whinge to our log file that we're compensating
for the corrupt data.
This commit is contained in:
Brian Somers 2001-07-31 08:21:39 +00:00
parent a8a35cdd91
commit ed09c8a4a0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=80721

View File

@ -744,6 +744,11 @@ chap_Input(struct bundle *bundle, struct link *l, struct mbuf *bp)
}
*ans = chap->auth.id;
bp = mbuf_Read(bp, ans + 1, alen);
if (p->link.lcp.want_authtype == 0x81 && ans[alen] != '\0') {
log_Printf(LogWARN, "%s: Compensating for corrupt (Win98?) "
"CHAP81 RESPONSE\n", l->name);
ans[alen] = '\0';
}
ans[alen+1] = '\0';
bp = auth_ReadName(&chap->auth, bp, len);
#ifdef HAVE_DES