libfdisk: (gpt) check header size before verify CRC

Addresses: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780834
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2015-03-23 12:03:30 +01:00
parent 5a34fb8a07
commit 9c6f3de60f
1 changed files with 5 additions and 4 deletions

View File

@ -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;