diff --git a/CHANGELOG b/CHANGELOG index 7883423b..4b7c6bb9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -95,6 +95,9 @@ HISTORY ++ Bugfixes: + 2009-05-01 Simon Goldschmidt + * pap.c: bug #21680: PPP upap_rauthnak() drops legal NAK packets + 2009-05-01 Simon Goldschmidt * ppp.c: bug #24228: Memory corruption with PPP and DHCP diff --git a/src/netif/ppp/pap.c b/src/netif/ppp/pap.c index b38abd1d..7c3fd7e4 100644 --- a/src/netif/ppp/pap.c +++ b/src/netif/ppp/pap.c @@ -518,16 +518,18 @@ upap_rauthnak(upap_state *u, u_char *inp, int id, int len) */ if (len < sizeof (u_char)) { UPAPDEBUG((LOG_INFO, "pap_rauthnak: rcvd short packet.\n")); - return; + } else { + GETCHAR(msglen, inp); + if(msglen > 0) { + len -= sizeof (u_char); + if (len < msglen) { + UPAPDEBUG((LOG_INFO, "pap_rauthnak: rcvd short packet.\n")); + return; + } + msg = (char *) inp; + PRINTMSG(msg, msglen); + } } - GETCHAR(msglen, inp); - len -= sizeof (u_char); - if (len < msglen) { - UPAPDEBUG((LOG_INFO, "pap_rauthnak: rcvd short packet.\n")); - return; - } - msg = (char *) inp; - PRINTMSG(msg, msglen); u->us_clientstate = UPAPCS_BADAUTH;