From c40c832b4cda298e30ce3c9a0ee2734cc13b9efa Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Sun, 29 May 2016 01:05:06 -0400 Subject: [PATCH] e2fsck: always fix invalid extra field in timestamps if time_t is 32-bits Systems with 32-bit time_t's can be used past 2038, so we should always modify dates with extra_time=3. (On systems with 64-bit time_t's we will fix these dates before the year 2242.) Signed-off-by: Theodore Ts'o --- e2fsck/pass1.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 799158ea0..c924d3143 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -512,7 +512,9 @@ static void check_inode_extra_space(e2fsck_t ctx, struct problem_context *pctx) * If the inode's extended atime (ctime, crtime, mtime) is stored in * the old, invalid format, repair it. */ - if (sizeof(time_t) > 4 && ctx->now < EXT4_EXTRA_NEGATIVE_DATE_CUTOFF && + if (((sizeof(time_t) <= 4) || + ((sizeof(time_t) > 4) && + ctx->now < EXT4_EXTRA_NEGATIVE_DATE_CUTOFF)) && (CHECK_INODE_EXTRA_NEGATIVE_EPOCH(inode, atime) || CHECK_INODE_EXTRA_NEGATIVE_EPOCH(inode, ctime) || CHECK_INODE_EXTRA_NEGATIVE_EPOCH(inode, crtime) || -- 2.47.3