From: Andrew Tridgell Date: Fri, 15 May 2026 00:27:22 +0000 (+1000) Subject: util1: handle out-of-range times in timestring X-Git-Tag: v3.4.3~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac692b199c61db6502050a8fb9efca931637e7e7;p=thirdparty%2Frsync.git util1: handle out-of-range times in timestring --- 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 */