]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/auth.c
pppd: Don't crash if crypt() returns NULL
[ppp.git] / pppd / auth.c
index fb719446f7489895f0b51081c99b99c8221fd210..883b7f5bb8aedfec061daa37b7bb2e4eabf15de8 100644 (file)
@@ -1442,9 +1442,11 @@ check_passwd(unit, auser, userlen, apasswd, passwdlen, msg)
            }
            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;
+               if (cryptpap || strcmp(passwd, secret) != 0) {
+                   char *cbuf = crypt(passwd, secret);
+                   if (!cbuf || strcmp(cbuf, secret) != 0)
+                       ret = UPAP_AUTHNAK;
+               }
            }
        }
        fclose(f);