From af4ca160807317390f4942cb5353ea1240684ea8 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 23 Mar 2015 12:03:30 +0100 Subject: [PATCH] libfdisk: (gpt) check header size before verify CRC Addresses: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780834 Signed-off-by: Karel Zak --- libfdisk/src/gpt.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c index 61b0a32e1e..9ceb01a6e9 100644 --- a/libfdisk/src/gpt.c +++ b/libfdisk/src/gpt.c @@ -954,6 +954,11 @@ static struct gpt_header *gpt_read_header(struct fdisk_context *cxt, if (!gpt_check_signature(header)) goto invalid; + /* make sure header size is between 92 and sector size bytes */ + hsz = le32_to_cpu(header->size); + if (hsz < GPT_HEADER_MINSZ || hsz > cxt->sector_size) + goto invalid; + if (!gpt_check_header_crc(header, NULL)) goto invalid; @@ -972,10 +977,6 @@ static struct gpt_header *gpt_read_header(struct fdisk_context *cxt, if (le64_to_cpu(header->my_lba) != lba) goto invalid; - /* make sure header size is between 92 and sector size bytes */ - hsz = le32_to_cpu(header->size); - if (hsz < GPT_HEADER_MINSZ || hsz > cxt->sector_size) - goto invalid; if (_ents) *_ents = ents; -- 2.39.2