|
|
5f1be0 |
diff -up yp-tools-2.12/src/yppasswd.c.crypt yp-tools-2.12/src/yppasswd.c
|
|
|
5f1be0 |
--- yp-tools-2.12/src/yppasswd.c.crypt 2012-04-23 13:01:35.599721168 +0200
|
|
|
5f1be0 |
+++ yp-tools-2.12/src/yppasswd.c 2012-04-23 13:16:18.251261293 +0200
|
|
|
5f1be0 |
@@ -772,9 +778,16 @@ main (int argc, char **argv)
|
|
|
5f1be0 |
{
|
|
|
5f1be0 |
int passwdlen = get_passwd_len (pwd->pw_passwd);
|
|
|
5f1be0 |
char *sane_passwd = alloca (passwdlen + 1);
|
|
|
5f1be0 |
+ char *crypted;
|
|
|
5f1be0 |
strncpy (sane_passwd, pwd->pw_passwd, passwdlen);
|
|
|
5f1be0 |
sane_passwd[passwdlen] = 0;
|
|
|
5f1be0 |
- if (strcmp (crypt (s, sane_passwd), sane_passwd))
|
|
|
5f1be0 |
+ crypted = crypt (s, sane_passwd);
|
|
|
5f1be0 |
+ if(crypted == NULL)
|
|
|
5f1be0 |
+ {
|
|
|
5f1be0 |
+ fprintf (stderr, _("Sorry - crypt() failed.\n"));
|
|
|
5f1be0 |
+ return 1;
|
|
|
5f1be0 |
+ }
|
|
|
5f1be0 |
+ if (strcmp (crypted, sane_passwd))
|
|
|
5f1be0 |
{
|
|
|
5f1be0 |
fprintf (stderr, _("Sorry.\n"));
|
|
|
5f1be0 |
return 1;
|
|
|
5f1be0 |
@@ -789,6 +802,7 @@ main (int argc, char **argv)
|
|
|
5f1be0 |
char *error_msg;
|
|
|
5f1be0 |
#endif /* USE_CRACKLIB */
|
|
|
5f1be0 |
char *buf, salt[37], *p = NULL;
|
|
|
5f1be0 |
+ char *crypted;
|
|
|
5f1be0 |
int tries = 0;
|
|
|
5f1be0 |
|
|
|
5f1be0 |
buf = (char *) malloc (129);
|
|
|
5f1be0 |
@@ -869,7 +883,13 @@ main (int argc, char **argv)
|
|
|
5f1be0 |
break;
|
|
|
5f1be0 |
}
|
|
|
5f1be0 |
|
|
|
5f1be0 |
- yppwd.newpw.pw_passwd = strdup (crypt (buf, salt));
|
|
|
5f1be0 |
+ crypted = crypt (buf, salt);
|
|
|
5f1be0 |
+ if(crypted == NULL) {
|
|
|
5f1be0 |
+ fprintf (stderr, _("Sorry - crypt() failed.\n"));
|
|
|
5f1be0 |
+ return 1;
|
|
|
5f1be0 |
+ } else {
|
|
|
5f1be0 |
+ yppwd.newpw.pw_passwd = strdup (crypted);
|
|
|
5f1be0 |
+ }
|
|
|
5f1be0 |
}
|
|
|
5f1be0 |
|
|
|
5f1be0 |
if (f_flag)
|