summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Richard2024-02-23 14:49:07 +0000
committerHauke Mehrtens2024-03-23 14:29:28 +0000
commit6b242991a995c41769977efb010dc9f4e4ec3da2 (patch)
treedb29cfd806f05174570f9dd70396b72263039304
parent17de36575f1edf4287c1d92c7d7eb45c8ceca29e (diff)
downloadfirmware-utils-6b242991a995c41769977efb010dc9f4e4ec3da2.tar.gz
ptgen: fix limitation for active partition in GPT
In GPT there is no reason to limit the active partition number to 4. This limitation is only for MBR, as it corresponds to the maximum number of primary partitions. Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
-rw-r--r--src/ptgen.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/ptgen.c b/src/ptgen.c
index b231c28..c7d6bc0 100644
--- a/src/ptgen.c
+++ b/src/ptgen.c
@@ -569,7 +569,7 @@ fail:
static void usage(char *prog)
{
fprintf(stderr, "Usage: %s [-v] [-n] [-g] -h <heads> -s <sectors> -o <outputfile>\n"
- " [-a 0..4] [-l <align kB>] [-G <guid>]\n"
+ " [-a <part number>] [-l <align kB>] [-G <guid>]\n"
" [[-t <type> | -T <GPT part type>] [-r] [-N <name>] -p <size>[@<start>]...] \n", prog);
exit(EXIT_FAILURE);
}
@@ -668,8 +668,6 @@ int main (int argc, char **argv)
break;
case 'a':
active = (int)strtoul(optarg, NULL, 0);
- if ((active < 0) || (active > 4))
- active = 0;
break;
case 'l':
kb_align = (int)strtoul(optarg, NULL, 0) * 2;
@@ -700,6 +698,11 @@ int main (int argc, char **argv)
if (argc || (!use_guid_partition_table && ((heads <= 0) || (sectors <= 0))) || !filename)
usage(argv[0]);
+ if ((use_guid_partition_table && active > GPT_ENTRY_MAX) ||
+ (!use_guid_partition_table && active > MBR_ENTRY_MAX) ||
+ active < 0)
+ active = 0;
+
if (use_guid_partition_table) {
heads = 254;
sectors = 63;