]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
cpio: multiple fixes in list_item_verbose()
authorMartin Matuska <martin@matuska.de>
Tue, 25 Jul 2023 13:06:15 +0000 (15:06 +0200)
committerMartin Matuska <martin@matuska.de>
Tue, 25 Jul 2023 13:20:51 +0000 (15:20 +0200)
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

cpio/cpio.c

index f2d83d94b647245a3759ced4f8e5c71dc185777d..b02a142f842d58ec7c53c35330191eaa05624d8b 100644 (file)
@@ -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),