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