Blame SOURCES/yp-tools-2.12-crypt.patch

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