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"

Signed-off-by: Davidlohr Bueso <d...@gnu.org>
---
 block/partitions/efi.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/block/partitions/efi.c b/block/partitions/efi.c
index abf33a2..3a5114e 100644
--- a/block/partitions/efi.c
+++ b/block/partitions/efi.c
@@ -25,6 +25,9 @@
  * TODO:
  *
  * Changelog:
+ * Sept. 2012 Davidlohr Bueso <d...@gnu.org>
+ * - tighten GPT header integrity verification.
+ *
  * Mon Nov 09 2004 Matt Domsch <matt_dom...@dell.com>
  * - 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));
-- 
1.7.4.1




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to