b8f1b8
Index: shadow-4.5/src/chage.c
b8f1b8
===================================================================
b8f1b8
--- shadow-4.5.orig/src/chage.c
b8f1b8
+++ shadow-4.5/src/chage.c
b8f1b8
@@ -168,6 +168,10 @@ static void date_to_str (char *buf, size
b8f1b8
 	struct tm *tp;
b8f1b8
 
b8f1b8
 	tp = gmtime (&date);
b8f1b8
+	if (tp == NULL) {
b8f1b8
+		(void) snprintf (buf, maxsize, "(unknown)");
b8f1b8
+		return;
b8f1b8
+	}
b8f1b8
 #ifdef HAVE_STRFTIME
b8f1b8
 	(void) strftime (buf, maxsize, "%Y-%m-%d", tp);
b8f1b8
 #else
b8f1b8
Index: shadow-4.5/src/lastlog.c
b8f1b8
===================================================================
b8f1b8
--- shadow-4.5.orig/src/lastlog.c
b8f1b8
+++ shadow-4.5/src/lastlog.c
b8f1b8
@@ -158,13 +158,17 @@ static void print_one (/*@null@*/const s
b8f1b8
 
b8f1b8
 	ll_time = ll.ll_time;
b8f1b8
 	tm = localtime (&ll_time);
b8f1b8
+	if (tm == NULL) {
b8f1b8
+		cp = "(unknown)";
b8f1b8
+	} else {
b8f1b8
 #ifdef HAVE_STRFTIME
b8f1b8
-	strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
b8f1b8
-	cp = ptime;
b8f1b8
+		strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
b8f1b8
+		cp = ptime;
b8f1b8
 #else
b8f1b8
-	cp = asctime (tm);
b8f1b8
-	cp[24] = '\0';
b8f1b8
+		cp = asctime (tm);
b8f1b8
+		cp[24] = '\0';
b8f1b8
 #endif
b8f1b8
+	}
b8f1b8
 
b8f1b8
 	if (ll.ll_time == (time_t) 0) {
b8f1b8
 		cp = _("**Never logged in**\0");
b8f1b8
Index: shadow-4.5/src/passwd.c
b8f1b8
===================================================================
b8f1b8
--- shadow-4.5.orig/src/passwd.c
b8f1b8
+++ shadow-4.5/src/passwd.c
b8f1b8
@@ -455,6 +455,9 @@ static /*@observer@*/const char *date_to
b8f1b8
 	struct tm *tm;
b8f1b8
 
b8f1b8
 	tm = gmtime (&t);
b8f1b8
+	if (tm == NULL) {
b8f1b8
+		return "(unknown)";
b8f1b8
+	}
b8f1b8
 #ifdef HAVE_STRFTIME
b8f1b8
 	(void) strftime (buf, sizeof buf, "%m/%d/%Y", tm);
b8f1b8
 #else				/* !HAVE_STRFTIME */
b8f1b8
Index: shadow-4.5/src/usermod.c
b8f1b8
===================================================================
b8f1b8
--- shadow-4.5.orig/src/usermod.c
b8f1b8
+++ shadow-4.5/src/usermod.c
b8f1b8
@@ -210,6 +210,10 @@ static void date_to_str (/*@unique@*//*@
b8f1b8
 	} else {
b8f1b8
 		time_t t = (time_t) date;
b8f1b8
 		tp = gmtime (&t);
b8f1b8
+		if (tp == NULL) {
b8f1b8
+			strncpy (buf, "unknown", maxsize);
b8f1b8
+			return;
b8f1b8
+		}
b8f1b8
 #ifdef HAVE_STRFTIME
b8f1b8
 		strftime (buf, maxsize, "%Y-%m-%d", tp);
b8f1b8
 #else