From 46b77fb2f04941c869c3a98cd17e9209c36b2917 Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Tue, 2 Aug 2016 17:07:58 +0200 Subject: cgptlib: cast 32bit to 64bit before multiplication Coverity noted that multiplying two 32bit values happens in 32bit, while the result is to be stored in an uint64_t. BUG=none BRANCH=none TEST=none Found-by: Coverity Scan #1353032, #1353033, 1353034 Change-Id: I8d0c5fe4feee066a81e8904c525dc836dd7a4fc6 Signed-off-by: Patrick Georgi Reviewed-on: https://chromium-review.googlesource.com/365391 Commit-Ready: Patrick Georgi Tested-by: Patrick Georgi Reviewed-by: Randall Spangler --- firmware/lib/gpt_misc.c | 9 ++++++--- 1 file 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; -- cgit v1.2.1