OSDN Git Service

bootsect.c: Don't allow negative start clusters for $MFT/$MFTMirr.
authorErik Larsson <mechie@users.sourceforge.net>
Mon, 24 Sep 2012 09:35:41 +0000 (11:35 +0200)
committerErik Larsson <mechie@users.sourceforge.net>
Mon, 24 Sep 2012 10:57:22 +0000 (12:57 +0200)
Negative values for mft_lcn / mftmirr_lcn don't make any sense and must
be detected as corruptions.

libntfs-3g/bootsect.c

index e9bea37..e9be072 100644 (file)
@@ -215,8 +215,8 @@ int ntfs_boot_sector_parse(ntfs_volume *vol, const NTFS_BOOT_SECTOR *bs)
        vol->mftmirr_lcn = sle64_to_cpu(bs->mftmirr_lcn);
        ntfs_log_debug("MFT LCN = %lld\n", (long long)vol->mft_lcn);
        ntfs_log_debug("MFTMirr LCN = %lld\n", (long long)vol->mftmirr_lcn);
-       if (vol->mft_lcn     > vol->nr_clusters ||
-           vol->mftmirr_lcn > vol->nr_clusters) {
+       if ((vol->mft_lcn     < 0 || vol->mft_lcn     > vol->nr_clusters) ||
+           (vol->mftmirr_lcn < 0 || vol->mftmirr_lcn > vol->nr_clusters)) {
                ntfs_log_error("$MFT LCN (%lld) or $MFTMirr LCN (%lld) is "
                              "greater than the number of clusters (%lld).\n",
                              (long long)vol->mft_lcn, (long long)vol->mftmirr_lcn,