* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-#ifndef lint
-static char rcsid[] = "$Id: upap.c,v 1.14 1999/03/16 03:15:15 paulus Exp $";
-#endif
+#define RCSID "$Id: upap.c,v 1.21 1999/09/11 12:09:00 paulus Exp $"
/*
* TODO:
#include "pppd.h"
#include "upap.h"
+static const char rcsid[] = RCSID;
+
static bool hide_password;
/*
*/
static option_t pap_option_list[] = {
{ "hide-password", o_bool, &hide_password,
- "Don't output passwords to log" },
+ "Don't output passwords to log", 1 },
{ "pap-restart", o_int, &upap[0].us_timeouttime,
"Set retransmit timeout for PAP" },
{ "pap-max-authreq", o_int, &upap[0].us_maxtransmits,
NULL,
1,
"PAP",
+ NULL,
pap_option_list,
NULL,
NULL,
* Check the username and password given.
*/
retcode = check_passwd(u->us_unit, ruser, ruserlen, rpasswd,
- rpasswdlen, &msg, &msglen);
+ rpasswdlen, &msg);
BZERO(rpasswd, rpasswdlen);
+ msglen = strlen(msg);
+ if (msglen > 255)
+ msglen = 255;
upap_sresp(u, retcode, id, msg, msglen);
* Parse message.
*/
if (len < sizeof (u_char)) {
- UPAPDEBUG(("pap_rauthack: rcvd short packet."));
- return;
- }
- GETCHAR(msglen, inp);
- len -= sizeof (u_char);
- if (len < msglen) {
- UPAPDEBUG(("pap_rauthack: rcvd short packet."));
- return;
+ UPAPDEBUG(("pap_rauthack: ignoring missing msg-length."));
+ } else {
+ GETCHAR(msglen, inp);
+ if (msglen > 0) {
+ len -= sizeof (u_char);
+ if (len < msglen) {
+ UPAPDEBUG(("pap_rauthack: rcvd short packet."));
+ return;
+ }
+ msg = (char *) inp;
+ PRINTMSG(msg, msglen);
+ }
}
- msg = (char *) inp;
- PRINTMSG(msg, msglen);
u->us_clientstate = UPAPCS_OPEN;
* Parse message.
*/
if (len < sizeof (u_char)) {
- UPAPDEBUG(("pap_rauthnak: rcvd short packet."));
- return;
- }
- GETCHAR(msglen, inp);
- len -= sizeof (u_char);
- if (len < msglen) {
- UPAPDEBUG(("pap_rauthnak: rcvd short packet."));
- return;
+ UPAPDEBUG(("pap_rauthnak: ignoring missing msg-length."));
+ } else {
+ GETCHAR(msglen, inp);
+ if (msglen > 0) {
+ len -= sizeof (u_char);
+ if (len < msglen) {
+ UPAPDEBUG(("pap_rauthnak: rcvd short packet."));
+ return;
+ }
+ msg = (char *) inp;
+ PRINTMSG(msg, msglen);
+ }
}
- msg = (char *) inp;
- PRINTMSG(msg, msglen);
u->us_clientstate = UPAPCS_BADAUTH;