From 7bc4ccf3aea935dde8ffc3e7c287884e22f87646 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Thu, 6 Apr 2023 12:53:00 -0400 Subject: [PATCH] makefs: avoid uninitialized memory in root directory date Move date setting into cd9660_populate_iso_dir_record so there is no path that leaves it unset. PR: 203531 Reported by: Thomas Schmitt Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D39258 --- usr.sbin/makefs/cd9660.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/usr.sbin/makefs/cd9660.c b/usr.sbin/makefs/cd9660.c index 4159e08c821..cf2696e578a 100644 --- a/usr.sbin/makefs/cd9660.c +++ b/usr.sbin/makefs/cd9660.c @@ -727,7 +727,10 @@ cd9660_populate_iso_dir_record(struct _iso_directory_record_cd9660 *record, u_char ext_attr_length, u_char flags, u_char name_len, const char * name) { + time_t tstamp = stampst.st_ino ? stampst.st_mtime : time(NULL); + record->ext_attr_length[0] = ext_attr_length; + cd9660_time_915(record->date, tstamp); record->flags[0] = ISO_FLAG_CLEAR | flags; record->file_unit_size[0] = 0; record->interleave[0] = 0; @@ -814,7 +817,6 @@ cd9660_fill_extended_attribute_record(cd9660node *node) static int cd9660_translate_node_common(iso9660_disk *diskStructure, cd9660node *newnode) { - time_t tstamp = stampst.st_ino ? stampst.st_mtime : time(NULL); u_char flag; char temp[ISO_FILENAME_MAXLENGTH_WITH_PADDING]; @@ -831,12 +833,6 @@ cd9660_translate_node_common(iso9660_disk *diskStructure, cd9660node *newnode) cd9660_populate_iso_dir_record(newnode->isoDirRecord, 0, flag, strlen(temp), temp); - /* Set the various dates */ - - /* If we want to use the current date and time */ - - cd9660_time_915(newnode->isoDirRecord->date, tstamp); - cd9660_bothendian_dword(newnode->fileDataLength, newnode->isoDirRecord->size); /* If the file is a link, we want to set the size to 0 */