From: Karel Zak Date: Mon, 2 Sep 2013 11:15:09 +0000 (+0200) Subject: libfdisk: (gpt) more robust PMBR partition size check X-Git-Tag: v2.24-rc1~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=879fadf173fdd51ab281cd0f94bdd8ee76602134;p=thirdparty%2Futil-linux.git libfdisk: (gpt) more robust PMBR partition size check According UEFI specification at least one (does not mean that the first) partition is 0xFF, it makes sense to check the size of the partition rather than check the first partition. Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c index eed7a6f06c..4f2335024b 100644 --- a/libfdisk/src/gpt.c +++ b/libfdisk/src/gpt.c @@ -460,7 +460,7 @@ static int gpt_mknew_header(struct fdisk_context *cxt, */ static int valid_pmbr(struct fdisk_context *cxt) { - int i, ret = 0; /* invalid by default */ + int i, part = 0, ret = 0; /* invalid by default */ struct gpt_legacy_mbr *pmbr = NULL; if (!cxt->firstsector) @@ -484,6 +484,7 @@ static int valid_pmbr(struct fdisk_context *cxt) * now check if there are other partition types for * hybrid MBR. */ + part = i; ret = GPT_MBR_PROTECTIVE; goto check_hybrid; } @@ -504,7 +505,7 @@ check_hybrid: * Hybrid MBRs do not necessarily comply with this. */ if (ret == GPT_MBR_PROTECTIVE) { - if (le32_to_cpu(pmbr->partition_record[0].size_in_lba) != + if (le32_to_cpu(pmbr->partition_record[part].size_in_lba) != min((uint32_t) cxt->total_sectors - 1, 0xFFFFFFFF)) ret = 0; }