From: Martin Matuska Date: Tue, 25 Jul 2023 13:06:15 +0000 (+0200) Subject: cpio: multiple fixes in list_item_verbose() X-Git-Tag: v3.7.1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee312cfd05c1d1d38f3a5dd10872b97cbc11902c;p=thirdparty%2Flibarchive.git cpio: multiple fixes in list_item_verbose() Do not call strftime() with NULL timeptr Adjust uids and gids buffers as cpio_i64toa() may return up to 22 bytes Fixes #1934 Fixes #1935 --- diff --git a/cpio/cpio.c b/cpio/cpio.c index f2d83d94b..b02a142f8 100644 --- a/cpio/cpio.c +++ b/cpio/cpio.c @@ -1146,7 +1146,7 @@ list_item_verbose(struct cpio *cpio, struct archive_entry *entry) { char size[32]; char date[32]; - char uids[16], gids[16]; + char uids[22], gids[22]; const char *uname, *gname; FILE *out = stdout; const char *fmt; @@ -1210,7 +1210,10 @@ list_item_verbose(struct cpio *cpio, struct archive_entry *entry) #else ltime = localtime(&mtime); #endif - strftime(date, sizeof(date), fmt, ltime); + if (ltime != NULL) + strftime(date, sizeof(date), fmt, ltime); + else + strcpy(date, "invalid mtime"); fprintf(out, "%s%3d %-8s %-8s %8s %12s %s", archive_entry_strmode(entry),