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

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)