diff -Naur sysvinit-2.88dsf-orig/src/sulogin.c sysvinit-2.88dsf/src/sulogin.c
--- sysvinit-2.88dsf-orig/src/sulogin.c	2010-04-08 05:07:36.000000000 -0400
+++ sysvinit-2.88dsf/src/sulogin.c	2012-04-24 00:00:37.700223541 -0400
@@ -591,9 +591,15 @@
 	 */
 	while(pwd) {
 		if ((p = getpasswd(pwd->pw_passwd)) == NULL) break;
-		if (pwd->pw_passwd[0] == 0 ||
-		    strcmp(crypt(p, pwd->pw_passwd), pwd->pw_passwd) == 0)
+		if (pwd->pw_passwd[0] == 0) 
 			sushell(pwd);
+		else {
+		   char *cryptbuf = crypt(p, pwd->pw_passwd);
+		   if(cryptbuf != NULL) {
+		     if(strcmp(cryptbuf, pwd->pw_passwd) == 0)
+			sushell(pwd);
+		   }
+		}
 		saved_sigquit = signal(SIGQUIT, SIG_IGN);
 		saved_sigtstp = signal(SIGTSTP, SIG_IGN);
 		saved_sigint  = signal(SIGINT,  SIG_IGN);
