Index: src/platform/vboot_reference/cgptlib/cgptlib.c |
diff --git a/src/platform/vboot_reference/cgptlib/cgptlib.c b/src/platform/vboot_reference/cgptlib/cgptlib.c |
index a871b1aa09fa12f4215c9d8f5fb9bead67b210fb..334c578967e1e5cf0af5a94811d7aa69c06d6e38 100644 |
--- a/src/platform/vboot_reference/cgptlib/cgptlib.c |
+++ b/src/platform/vboot_reference/cgptlib/cgptlib.c |
@@ -58,7 +58,6 @@ int CheckParameters(GptData *gpt) { |
/* Expects header signature should be GPT_HEADER_SIGNATURE. */ |
uint32_t CheckHeaderSignature(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *headers[] = { |
(GptHeader*)gpt->primary_header, |
(GptHeader*)gpt->secondary_header, |
@@ -69,15 +68,14 @@ uint32_t CheckHeaderSignature(GptData *gpt) { |
if (Memcmp(headers[i]->signature, |
GPT_HEADER_SIGNATURE, |
GPT_HEADER_SIGNATURE_SIZE)) { |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
} |
} |
- return valid_headers; |
+ return gpt->valid_headers; |
} |
/* The header revision should be GPT_HEADER_REVISION. */ |
uint32_t CheckRevision(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *headers[] = { |
(GptHeader*)gpt->primary_header, |
(GptHeader*)gpt->secondary_header, |
@@ -86,15 +84,14 @@ uint32_t CheckRevision(GptData *gpt) { |
for (i = PRIMARY; i <= SECONDARY; ++i) { |
if (headers[i]->revision != GPT_HEADER_REVISION) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
} |
- return valid_headers; |
+ return gpt->valid_headers; |
} |
/* A valid header size should be between MIN_SIZE_OF_HEADER and |
* MAX_SIZE_OF_HEADER. */ |
uint32_t CheckSize(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *headers[] = { |
(GptHeader*)gpt->primary_header, |
(GptHeader*)gpt->secondary_header, |
@@ -104,14 +101,13 @@ uint32_t CheckSize(GptData *gpt) { |
for (i = PRIMARY; i <= SECONDARY; ++i) { |
if ((headers[i]->size < MIN_SIZE_OF_HEADER) || |
(headers[i]->size > MAX_SIZE_OF_HEADER)) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
} |
- return valid_headers; |
+ return gpt->valid_headers; |
} |
/* Reserved and padding fields should be zero. */ |
uint32_t CheckReservedFields(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *headers[] = { |
(GptHeader*)gpt->primary_header, |
(GptHeader*)gpt->secondary_header, |
@@ -120,32 +116,30 @@ uint32_t CheckReservedFields(GptData *gpt) { |
for (i = PRIMARY; i <= SECONDARY; ++i) { |
if (headers[i]->reserved || headers[i]->padding) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
} |
- return valid_headers; |
+ return gpt->valid_headers; |
} |
/* my_lba field points to the header itself. |
* So that the my_lba of primary header should be 1 (right after PMBR). |
* The my_lba of secondary header should be the last secotr on drive. */ |
uint32_t CheckMyLba(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *primary_header, *secondary_header; |
primary_header = (GptHeader*)gpt->primary_header; |
secondary_header = (GptHeader*)gpt->secondary_header; |
if (primary_header->my_lba != GPT_PMBR_SECTOR) /* 2nd sector on drive */ |
- INVALIDATE_HEADER(valid_headers, PRIMARY); |
+ INVALIDATE_HEADER(gpt->valid_headers, PRIMARY); |
if (secondary_header->my_lba != (gpt->drive_sectors - 1)) /* last sector */ |
- INVALIDATE_HEADER(valid_headers, SECONDARY); |
- return valid_headers; |
+ INVALIDATE_HEADER(gpt->valid_headers, SECONDARY); |
+ return gpt->valid_headers; |
} |
/* SizeOfPartitionEntry must be between MIN_SIZE_OF_ENTRY and |
* MAX_SIZE_OF_ENTRY, and a multiple of SIZE_OF_ENTRY_MULTIPLE. */ |
uint32_t CheckSizeOfPartitionEntry(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *headers[] = { |
(GptHeader*)gpt->primary_header, |
(GptHeader*)gpt->secondary_header, |
@@ -157,16 +151,15 @@ uint32_t CheckSizeOfPartitionEntry(GptData *gpt) { |
if ((size_of_entry < MIN_SIZE_OF_ENTRY) || |
(size_of_entry > MAX_SIZE_OF_ENTRY) || |
(size_of_entry & (SIZE_OF_ENTRY_MULTIPLE - 1))) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
} |
- return valid_headers; |
+ return gpt->valid_headers; |
} |
/* number_of_entries must be between MIN_NUMBER_OF_ENTRIES and |
* MAX_NUMBER_OF_ENTRIES, and size_of_entry * number_of_entries must be |
* equal to TOTAL_ENTRIES_SIZE. */ |
uint32_t CheckNumberOfEntries(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *headers[] = { |
(GptHeader*)gpt->primary_header, |
(GptHeader*)gpt->secondary_header, |
@@ -178,16 +171,15 @@ uint32_t CheckNumberOfEntries(GptData *gpt) { |
if ((number_of_entries < MIN_NUMBER_OF_ENTRIES) || |
(number_of_entries > MAX_NUMBER_OF_ENTRIES) || |
(number_of_entries * headers[i]->size_of_entry != TOTAL_ENTRIES_SIZE)) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
} |
- return valid_headers; |
+ return gpt->valid_headers; |
} |
/* Make sure entries_lba is correct. |
* 2 for primary entries |
* drive_sectors-1-GPT_ENTRIES_SECTORS for secondary entries. */ |
uint32_t CheckEntriesLba(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
GptHeader *primary_header, *secondary_header; |
primary_header = (GptHeader*)gpt->primary_header; |
@@ -196,20 +188,19 @@ uint32_t CheckEntriesLba(GptData *gpt) { |
/* We assume the primary partition entry table is located at the sector |
* right after primary partition header. */ |
if (primary_header->entries_lba != (GPT_PMBR_SECTOR + GPT_HEADER_SECTOR)) |
- INVALIDATE_HEADER(valid_headers, PRIMARY); |
+ INVALIDATE_HEADER(gpt->valid_headers, PRIMARY); |
/* We assume the secondary partition entry table is the 32 sectors |
* right before the secondary partition header. */ |
if (secondary_header->entries_lba != |
(gpt->drive_sectors - 1 - GPT_ENTRIES_SECTORS)) |
- INVALIDATE_HEADER(valid_headers, SECONDARY); |
- return valid_headers; |
+ INVALIDATE_HEADER(gpt->valid_headers, SECONDARY); |
+ return gpt->valid_headers; |
} |
/* FirstUsableLBA must be after the end of the primary GPT table array. |
* LastUsableLBA must be before the start of the secondary GPT table array. |
* FirstUsableLBA <= LastUsableLBA. */ |
uint32_t CheckValidUsableLbas(GptData *gpt) { |
- uint32_t valid_headers = MASK_BOTH; |
uint64_t end_of_primary_entries; |
uint64_t start_of_secondary_entries; |
GptHeader *headers[] = { |
@@ -224,20 +215,20 @@ uint32_t CheckValidUsableLbas(GptData *gpt) { |
for (i = PRIMARY; i <= SECONDARY; ++i) { |
if (headers[i]->first_usable_lba < end_of_primary_entries) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
if (headers[i]->last_usable_lba >= start_of_secondary_entries) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
if (headers[i]->first_usable_lba > headers[i]->last_usable_lba) |
- INVALIDATE_HEADER(valid_headers, i); |
+ INVALIDATE_HEADER(gpt->valid_headers, i); |
} |
if (headers[PRIMARY]->first_usable_lba - headers[PRIMARY]->entries_lba < |
GPT_ENTRIES_SECTORS) |
- INVALIDATE_HEADER(valid_headers, PRIMARY); |
+ INVALIDATE_HEADER(gpt->valid_headers, PRIMARY); |
if (headers[SECONDARY]->last_usable_lba >= headers[SECONDARY]->entries_lba) |
- INVALIDATE_HEADER(valid_headers, SECONDARY); |
+ INVALIDATE_HEADER(gpt->valid_headers, SECONDARY); |
- return valid_headers; |
+ return gpt->valid_headers; |
} |
/* Checks header CRC */ |
@@ -289,7 +280,7 @@ uint32_t CheckEntriesCrc(GptData *gpt) { |
} |
/* Returns non-zero if the given GUID is non-zero. */ |
-static int NonZeroGuid(const Guid *guid) { |
+int NonZeroGuid(const Guid *guid) { |
static Guid zero = {{{0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0}}}}; |
return Memcmp(&zero, guid, sizeof(zero)); |
} |
@@ -376,7 +367,6 @@ int OverlappedEntries(GptEntry *entries, uint32_t number_of_entries) { |
/* Checks if any two partitions are overlapped in primary and secondary entries. |
*/ |
uint32_t CheckOverlappedPartition(GptData *gpt) { |
- uint32_t valid_entries = MASK_BOTH; |
GptHeader *headers[] = { |
(GptHeader*)gpt->primary_header, |
(GptHeader*)gpt->secondary_header, |
@@ -395,9 +385,9 @@ uint32_t CheckOverlappedPartition(GptData *gpt) { |
for (i = PRIMARY; i <= SECONDARY; ++i) { |
if (OverlappedEntries(entries[i], number_of_entries)) |
- INVALIDATE_ENTRIES(valid_entries, i); |
+ INVALIDATE_ENTRIES(gpt->valid_entries, i); |
} |
- return valid_entries; |
+ return gpt->valid_entries; |
} |
/* Primary entries and secondary entries should be bitwise identical. |