X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fsession.c;h=56385dd638742ba9fd7028165104e8565cff0778;hp=bb7c5fa1cb5b20de096317b2467e7898f97b909c;hb=36733a891fb56594fcee580f667b33a64b990981;hpb=ee12d1706604759d25cd1508bd7e0fbf47ea536a diff --git a/pppd/session.c b/pppd/session.c index bb7c5fa..56385dd 100644 --- a/pppd/session.c +++ b/pppd/session.c @@ -73,7 +73,7 @@ #include #include #include -#ifdef USE_SHADOW +#ifdef HAS_SHADOW #include #endif #include @@ -178,6 +178,7 @@ session_start(flags, user, passwd, ttyName, msg) bool try_session = 0; #else /* #ifdef USE_PAM */ struct passwd *pw; + char *cbuf; #ifdef HAS_SHADOW struct spwd *spwd; struct spwd *getspnam(); @@ -348,8 +349,10 @@ session_start(flags, user, passwd, ttyName, msg) /* * If no passwd, don't let them login if we're authenticating. */ - if (pw->pw_passwd == NULL || strlen(pw->pw_passwd) < 2 - || strcmp(crypt(passwd, pw->pw_passwd), pw->pw_passwd) != 0) + if (pw->pw_passwd == NULL || strlen(pw->pw_passwd) < 2) + return SESSION_FAILED; + cbuf = crypt(passwd, pw->pw_passwd); + if (!cbuf || strcmp(cbuf, pw->pw_passwd) != 0) return SESSION_FAILED; }