diff options
Diffstat (limited to 'firmware/lib/gpt_misc.c')
-rw-r--r-- | firmware/lib/gpt_misc.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/firmware/lib/gpt_misc.c b/firmware/lib/gpt_misc.c index 0bf09401..c9b71701 100644 --- a/firmware/lib/gpt_misc.c +++ b/firmware/lib/gpt_misc.c @@ -57,7 +57,8 @@ int AllocAndReadGptData(VbExDiskHandle_t disk_handle, GptData *gptdata) gptdata->gpt_drive_sectors, gptdata->flags)) { primary_valid = 1; - uint64_t entries_bytes = primary_header->number_of_entries + uint64_t entries_bytes = + (uint64_t)primary_header->number_of_entries * primary_header->size_of_entry; uint64_t entries_sectors = entries_bytes / gptdata->sector_bytes; @@ -90,7 +91,8 @@ int AllocAndReadGptData(VbExDiskHandle_t disk_handle, GptData *gptdata) gptdata->gpt_drive_sectors, gptdata->flags)) { secondary_valid = 1; - uint64_t entries_bytes = secondary_header->number_of_entries + uint64_t entries_bytes = + (uint64_t)secondary_header->number_of_entries * secondary_header->size_of_entry; uint64_t entries_sectors = entries_bytes / gptdata->sector_bytes; @@ -122,7 +124,8 @@ int WriteAndFreeGptData(VbExDiskHandle_t disk_handle, GptData *gptdata) { int skip_primary = 0; GptHeader *header = (GptHeader *)gptdata->primary_header; - uint64_t entries_bytes = header->number_of_entries + uint64_t entries_bytes = + (uint64_t)header->number_of_entries * header->size_of_entry; uint64_t entries_sectors = entries_bytes / gptdata->sector_bytes; int ret = 1; |