From a9dca5c04d4bfc797ff567f3d358f819c101ec2f Mon Sep 17 00:00:00 2001 From: Jeffy Chen Date: Mon, 20 Feb 2017 21:26:58 +0800 Subject: cgpt: prioritize: Make sure all headers/entries are valid The prioritize cmd expected primary gpt header and entries are valid. Add a validity check to guarantee that. BUG=b:35585016 TEST=Check on bob, the secondary gpt still valid after these commands: dd if=/dev/zero of=/dev/mmcblk0 bs=512 count=64 cgpt prioritize /dev/mmcblk0 Change-Id: I853e25211a46fa3ce93cef1e5169b93b0a6430a9 Signed-off-by: Jeffy Chen Reviewed-on: https://chromium-review.googlesource.com/604814 Reviewed-by: Randall Spangler Reviewed-by: Julius Werner --- cgpt/cgpt_add.c | 6 ++---- cgpt/cgpt_prioritize.c | 5 +++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cgpt/cgpt_add.c b/cgpt/cgpt_add.c index 4e0506e9..5ac50677 100644 --- a/cgpt/cgpt_add.c +++ b/cgpt/cgpt_add.c @@ -138,10 +138,8 @@ static int CgptCheckAddValidity(struct drive *drive) { return -1; } - if (((drive->gpt.valid_headers & MASK_BOTH) != MASK_BOTH) || - ((drive->gpt.valid_entries & MASK_BOTH) != MASK_BOTH)) { - Error("one of the GPT header/entries is invalid.\n" - "please run 'cgpt repair' before adding anything.\n"); + if (CGPT_OK != CheckValid(drive)) { + Error("please run 'cgpt repair' before adding anything.\n"); return -1; } diff --git a/cgpt/cgpt_prioritize.c b/cgpt/cgpt_prioritize.c index 2bfc4843..c4e812c2 100644 --- a/cgpt/cgpt_prioritize.c +++ b/cgpt/cgpt_prioritize.c @@ -116,6 +116,11 @@ int CgptPrioritize(CgptPrioritizeParams *params) { return CGPT_FAILED; } + if (CGPT_OK != CheckValid(&drive)) { + Error("please run 'cgpt repair' before reordering the priority.\n"); + return CGPT_OK; + } + max_part = GetNumberOfEntries(&drive); if (params->set_partition) { -- cgit v1.2.1