From 9337e0a0698597e5b36d37de651f91f15d4185c1 Mon Sep 17 00:00:00 2001 From: Erik Larsson Date: Mon, 24 Sep 2012 11:35:41 +0200 Subject: [PATCH] bootsect.c: Don't allow negative start clusters for $MFT/$MFTMirr. Negative values for mft_lcn / mftmirr_lcn don't make any sense and must be detected as corruptions. --- libntfs-3g/bootsect.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libntfs-3g/bootsect.c b/libntfs-3g/bootsect.c index e9bea370..e9be072d 100644 --- a/libntfs-3g/bootsect.c +++ b/libntfs-3g/bootsect.c @@ -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,