diff mbox series

[firmware-utils] ptgen: fix limitation for active partition in GPT

Message ID mailman.9941.1708699811.1280.openwrt-devel@lists.openwrt.org
State Accepted
Delegated to: Hauke Mehrtens
Headers show
Series [firmware-utils] ptgen: fix limitation for active partition in GPT | expand

Commit Message

Thomas Richard Feb. 23, 2024, 2:49 p.m. UTC
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
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>
---
 src/ptgen.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
diff mbox series

Patch

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;