OSDN Git Service

Checked the locations of MFT and MFTMirr at startup
authorJean-Pierre André <jpandre@users.sourceforge.net>
Tue, 26 Jan 2021 09:06:18 +0000 (10:06 +0100)
committerJean-Pierre André <jpandre@users.sourceforge.net>
Tue, 26 Jan 2021 09:06:18 +0000 (10:06 +0100)
On startup make sure the lcns of the MFT and the MFTMirr are not null and
they are different, so that the mounting is denied gracefully if they are.

libntfs-3g/bootsect.c

index e9eb0b1..483473e 100644 (file)
@@ -154,6 +154,12 @@ BOOL ntfs_boot_sector_is_ntfs(NTFS_BOOT_SECTOR *b)
                }
        }
 
+       /* MFT and MFTMirr may not overlap the boot sector or be the same */
+       if (!b->mft_lcn || !b->mftmirr_lcn || (b->mft_lcn == b->mftmirr_lcn)) {
+               ntfs_log_error("Invalid location of MFT or MFTMirr.\n");
+               goto not_ntfs;
+       }
+
        if (b->end_of_sector_marker != const_cpu_to_le16(0xaa55))
                ntfs_log_debug("Warning: Bootsector has invalid end of sector "
                               "marker.\n");