- (djm) Stop shadow expiry checking from preventing logins with NIS. Based
   on fix from HARUYAMA Seigo <haruyama@nt.phys.s.u-tokyo.ac.jp>
diff --git a/ChangeLog b/ChangeLog
index 8d9dc98..118416f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 20000702
  - (djm) Fix brace mismatch from Corinna Vinschen <vinschen@cygnus.com>
+ - (djm) Stop shadow expiry checking from preventing logins with NIS. Based
+   on fix from HARUYAMA Seigo <haruyama@nt.phys.s.u-tokyo.ac.jp>
 
 20000701
  - (djm) Fix Tru64 SIA problems reported by John P Speno <speno@isc.upenn.edu>
diff --git a/auth.c b/auth.c
index bf5306b..5aeeec6 100644
--- a/auth.c
+++ b/auth.c
@@ -65,17 +65,18 @@
 		return 0;
 
 	spw = getspnam(pw->pw_name);
-	if (spw == NULL)
-		return 0;
-	
-	/* Check account expiry */
-	if ((spw->sp_expire > 0) && ((time(NULL) / 86400) > spw->sp_expire))
-		return 0;
+	if (spw != NULL) {
+		int days = time(NULL) / 86400;
 
-	/* Check password expiry */
-	if ((spw->sp_lstchg > 0) && (spw->sp_inact > 0) && 
-		((time(NULL) / 86400) > (spw->sp_lstchg + spw->sp_inact)))
-		return 0;
+		/* Check account expiry */
+		if ((spw->sp_expire > 0) && (days > spw->sp_expire))
+			return 0;
+
+		/* Check password expiry */
+		if ((spw->sp_lstchg > 0) && (spw->sp_inact > 0) && 
+			(days > (spw->sp_lstchg + spw->sp_inact)))
+			return 0;
+	}
 #else
 	/* Shouldn't be called if pw is NULL, but better safe than sorry... */
 	if (!pw)