From cc8471156746f8fbf818a0fe88b877ce1ca5d2df Mon Sep 17 00:00:00 2001
From: Andrew Tridgell <andrew@tridgell.net>
Date: Fri, 15 May 2026 10:27:22 +1000
Subject: [PATCH 43/43] util1: handle out-of-range times in timestring

---
 util1.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/util1.c b/util1.c
index 49ead492..36c1b68c 100644
--- a/util1.c
+++ b/util1.c
@@ -1459,7 +1459,12 @@ char *timestring(time_t t)
 	static char buffers[4][20]; /* We support 4 simultaneous timestring results. */
 	char *TimeBuf = buffers[ndx = (ndx + 1) % 4];
 	struct tm tmp, *tm = localtime_r(&t, &tmp);
-	int len = snprintf(TimeBuf, sizeof buffers[0], "%4d/%02d/%02d %02d:%02d:%02d",
+	int len;
+	if (!tm) {
+		strlcpy(TimeBuf, "(time out of range)", sizeof buffers[0]);
+		return TimeBuf;
+	}
+	len = snprintf(TimeBuf, sizeof buffers[0], "%4d/%02d/%02d %02d:%02d:%02d",
 		 (int)tm->tm_year + 1900, (int)tm->tm_mon + 1, (int)tm->tm_mday,
 		 (int)tm->tm_hour, (int)tm->tm_min, (int)tm->tm_sec);
 	assert(len > 0); /* Silence gcc warning */
-- 
2.51.0

