From 24d8725a3ee8ad798040a8772eed4cd471039cc1 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Tue, 30 Sep 2014 17:43:31 +0200 Subject: [PATCH] Fix mbrfs partition size and length calculation. --- mbr/mbrfs.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mbr/mbrfs.cpp b/mbr/mbrfs.cpp index de792104..a7f2b2f7 100644 --- a/mbr/mbrfs.cpp +++ b/mbr/mbrfs.cpp @@ -90,23 +90,23 @@ bool is_extended_partition(const struct partition* partition) uint64_t partition_get_start(const struct partition* partition) { if ( !is_48bit_lba_partition(partition) ) - return partition->start_sector * 512; + return (uint64_t) partition->start_sector * 512; const struct partition_lba48* partition_lba48 = (const struct partition_lba48*) partition; uint64_t lower = partition_lba48->start_sector; uint64_t higher = partition_lba48->start_sector_high; - return ((lower << 48) + higher) * 512; + return ((higher << 32) + lower) * 512; } uint64_t partition_get_length(const struct partition* partition) { if ( !is_48bit_lba_partition(partition) ) - return partition->total_sectors * 512; + return (uint64_t) partition->total_sectors * 512; const struct partition_lba48* partition_lba48 = (const struct partition_lba48*) partition; uint64_t lower = partition_lba48->total_sectors; uint64_t higher = partition_lba48->total_sectors_high; - return ((lower << 48) + higher) * 512; + return ((higher << 32) + lower) * 512; } bool is_partition_used(const struct partition* partition)