]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
e2fsck: be more careful in assuming inline_data inodes are directories
authorDarrick J. Wong <darrick.wong@oracle.com>
Sun, 10 Aug 2014 22:49:37 +0000 (18:49 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 10 Aug 2014 22:49:37 +0000 (18:49 -0400)
If a file is marked inline_data but its i_size isn't a multiple of
four, it probably isn't an inline directory, because directory entries
have sizes that are multiples of four.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
e2fsck/pass1.c

index 005e9e174dac5cf9d9e86ba56ec6fe9ff9efe79b..a473bd739ffb7c6946dfab7c5e997516e552f962 100644 (file)
@@ -540,6 +540,12 @@ static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx,
 
                if (ext2fs_inline_data_size(ctx->fs, pctx->ino, &size))
                        return;
+               /*
+                * If the size isn't a multiple of 4, it's probably not a
+                * directory??
+                */
+               if (size & 3)
+                       return;
                /* device files never have a "system.data" entry */
                goto isdir;
        } else if (extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) {