ppp/ppp-2.4.5-crypt.patch

48 lines
1.8 KiB
Diff

diff -up ppp-2.4.5/pppd/auth.c.crypt ppp-2.4.5/pppd/auth.c
--- ppp-2.4.5/pppd/auth.c.crypt 2013-07-04 16:10:27.338463397 +0200
+++ ppp-2.4.5/pppd/auth.c 2013-07-04 16:15:00.204471203 +0200
@@ -1515,11 +1515,19 @@ check_passwd(unit, auser, userlen, apass
ret = UPAP_AUTHNAK;
}
}
+
if (secret[0] != 0 && !login_secret) {
- /* password given in pap-secrets - must match */
- if ((cryptpap || strcmp(passwd, secret) != 0)
- && strcmp(crypt(passwd, secret), secret) != 0)
- ret = UPAP_AUTHNAK;
+ /* password given in pap-secrets - must match */
+ char *cryptbuf = NULL;
+ cryptbuf = crypt(passwd, secret);
+
+ if (cryptpap) {
+ if ((cryptbuf == NULL) || (strcmp(cryptbuf, secret) != 0))
+ ret = UPAP_AUTHNAK;
+ } else {
+ if ((strcmp(passwd, secret) != 0) && (cryptbuf == NULL || strcmp(cryptbuf, secret) != 0))
+ ret = UPAP_AUTHNAK;
+ }
}
}
fclose(f);
diff -up ppp-2.4.5/pppd/session.c.crypt ppp-2.4.5/pppd/session.c
--- ppp-2.4.5/pppd/session.c.crypt 2009-11-16 23:26:07.000000000 +0100
+++ ppp-2.4.5/pppd/session.c 2013-07-04 16:10:27.354463397 +0200
@@ -348,9 +348,14 @@ session_start(flags, user, passwd, ttyNa
/*
* 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;
+ } else {
+ char *cryptbuf = NULL;
+ cryptbuf = crypt(passwd, pw->pw_passwd);
+ if ((cryptbuf == NULL) || (strcmp(cryptbuf, pw->pw_passwd) != 0))
+ return SESSION_FAILED;
+ }
}
#endif /* #ifdef USE_PAM */