git: 3c67983babbb - stable/13 - Handle NULL return from localtime(3) in ls(1) and find(1)
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 27 Sep 2022 16:20:49 UTC
The branch stable/13 has been updated by mckusick:
URL: https://cgit.FreeBSD.org/src/commit/?id=3c67983babbb2c51e29424165f87adc8c4bf7dda
commit 3c67983babbb2c51e29424165f87adc8c4bf7dda
Author: Kirk McKusick <mckusick@FreeBSD.org>
AuthorDate: 2022-09-09 21:29:53 +0000
Commit: Kirk McKusick <mckusick@FreeBSD.org>
CommitDate: 2022-09-27 16:20:29 +0000
Handle NULL return from localtime(3) in ls(1) and find(1)
(cherry picked from commit 927f8d8bbbed70f6c88d05c19b5b366f8e7532c9)
---
bin/ls/print.c | 11 ++++++-----
usr.bin/find/ls.c | 6 +++++-
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/bin/ls/print.c b/bin/ls/print.c
index bbe5c6f8a6f6..5e8a54ca0620 100644
--- a/bin/ls/print.c
+++ b/bin/ls/print.c
@@ -432,18 +432,17 @@ printdev(size_t width, dev_t dev)
(void)printf("%#*jx ", (u_int)width, (uintmax_t)dev);
}
-static size_t
+static void
ls_strftime(char *str, size_t len, const char *fmt, const struct tm *tm)
{
char *posb, nfmt[BUFSIZ];
const char *format = fmt;
- size_t ret;
if ((posb = strstr(fmt, "%b")) != NULL) {
if (month_max_size == 0) {
compute_abbreviated_month_size();
}
- if (month_max_size > 0) {
+ if (month_max_size > 0 && tm != NULL) {
snprintf(nfmt, sizeof(nfmt), "%.*s%s%*s%s",
(int)(posb - fmt), fmt,
get_abmon(tm->tm_mon),
@@ -453,8 +452,10 @@ ls_strftime(char *str, size_t len, const char *fmt, const struct tm *tm)
format = nfmt;
}
}
- ret = strftime(str, len, format, tm);
- return (ret);
+ if (tm != NULL)
+ strftime(str, len, format, tm);
+ else
+ strlcpy(str, "bad date val", len);
}
static void
diff --git a/usr.bin/find/ls.c b/usr.bin/find/ls.c
index 8c4c16ed3461..8d7406216256 100644
--- a/usr.bin/find/ls.c
+++ b/usr.bin/find/ls.c
@@ -88,6 +88,7 @@ printtime(time_t ftime)
static time_t lnow;
const char *format;
static int d_first = -1;
+ struct tm *tm;
#ifdef D_MD_ORDER
if (d_first < 0)
@@ -103,7 +104,10 @@ printtime(time_t ftime)
else
/* mmm dd yyyy || dd mmm yyyy */
format = d_first ? "%e %b %Y " : "%b %e %Y ";
- strftime(longstring, sizeof(longstring), format, localtime(&ftime));
+ if ((tm = localtime(&ftime)) != NULL)
+ strftime(longstring, sizeof(longstring), format, tm);
+ else
+ strlcpy(longstring, "bad date val ", sizeof(longstring));
fputs(longstring, stdout);
}