From: Karel Zak Date: Mon, 23 Mar 2015 11:03:30 +0000 (+0100) Subject: libfdisk: (gpt) check header size before verify CRC X-Git-Tag: v2.27-rc1~323 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c6f3de60f9858e404a825824026bff4c42203fc;p=thirdparty%2Futil-linux.git libfdisk: (gpt) check header size before verify CRC Addresses: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780834 Signed-off-by: Karel Zak --- 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;