From: Theodore Ts'o Date: Wed, 1 May 2024 20:54:26 +0000 (-0400) Subject: e2image: add support for post-2038 dates in the e2image header X-Git-Tag: v1.47.1-wc1~135 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=80abfebc673bb2a1496dec88f7f0601e7325d3c2;p=tools%2Fe2fsprogs.git e2image: add support for post-2038 dates in the e2image header Signed-off-by: Theodore Ts'o --- diff --git a/lib/ext2fs/e2image.h b/lib/ext2fs/e2image.h index 53b20cc..143e0dc 100644 --- a/lib/ext2fs/e2image.h +++ b/lib/ext2fs/e2image.h @@ -26,8 +26,9 @@ struct ext2_image_hdr { __u32 image_device; /* Device number of image file */ __u32 image_inode; /* Inode number of image file */ - __u32 image_time; /* Time of image creation */ - __u32 image_reserved[8]; + __u32 image_time_lo; /* Time of image creation */ + __u32 image_time_hi; /* High bits of image test creation */ + __u32 image_reserved[7]; __u32 offset_super; /* Byte offset of the sb and descriptors */ __u32 offset_inode; /* Byte offset of the inode table */ diff --git a/misc/e2image.c b/misc/e2image.c index 1ae0300..2c46d3f 100644 --- a/misc/e2image.c +++ b/misc/e2image.c @@ -239,6 +239,7 @@ static void write_image_file(ext2_filsys fs, int fd) struct ext2_image_hdr hdr; struct stat st; errcode_t retval; + time_t now = time(0); write_header(fd, NULL, sizeof(struct ext2_image_hdr), fs->blocksize); memset(&hdr, 0, sizeof(struct ext2_image_hdr)); @@ -292,7 +293,12 @@ static void write_image_file(ext2_filsys fs, int fd) } memcpy(hdr.fs_uuid, fs->super->s_uuid, sizeof(hdr.fs_uuid)); - hdr.image_time = ext2fs_cpu_to_le32(time(0)); + hdr.image_time_lo = ext2fs_cpu_to_le32(now & 0xFFFFFFFF); +#if (SIZEOF_TIME_T > 4) + hdr.image_time_hi = ext2fs_cpu_to_le32(now >> 32); +#else + hdr_image_time_hi = 0; +#endif write_header(fd, &hdr, sizeof(struct ext2_image_hdr), fs->blocksize); }