Skip to contentSkip to conversation

partitions: efi: check minimum header size

PATCH RESEND New Davidlohr Bueso 1 participant 1 message Oct 25, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH RESEND 3/3 partitions: efi: check minimum header size

As per UEFI specs 2.3.1 (June 2012),
"The Header Size must be greater than 92 and must be less than or equal to the logical block size"

---
 block/partitions/efi.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
block/partitions/efi.c +5 -2
index abf33a2..688b59c 100644
@@ -25,6 +25,9 @@
  * TODO:
  *
  * Changelog:
+ * Oct 2012 Davidlohr Bueso <[email protected]>
+ * - tighten GPT header integrity verification.
+ *
  * Mon Nov 09 2004 Matt Domsch <[email protected]>
  * - test for valid PMBR and valid PGPT before ever reading
  *   AGPT, allow override with 'gpt' kernel command line option.
@@ -311,8 +314,8 @@ static int is_gpt_valid(struct parsed_partitions *state, u64 lba,
 	}
 
 	/* Check the GUID Partition Table header size */
-	if (le32_to_cpu((*gpt)->header_size) >
-			bdev_logical_block_size(state->bdev)) {
+	if (le32_to_cpu((*gpt)->header_size) < 92 ||
+	    le32_to_cpu((*gpt)->header_size) > bdev_logical_block_size(state->bdev)) {
 		pr_debug("GUID Partition Table Header size is wrong: %u > %u\n",
 			le32_to_cpu((*gpt)->header_size),
 			bdev_logical_block_size(state->bdev));
Signature · 1 line
1.7.9.5