svn commit: r356031 - head/stand/i386/gptboot
Ian Lepore
ian at FreeBSD.org
Sun Dec 22 22:33:23 UTC 2019
Author: ian
Date: Sun Dec 22 22:33:22 2019
New Revision: 356031
URL: https://svnweb.freebsd.org/changeset/base/356031
Log:
In gptboot, don't assume a partition number is a single digit, 1-9. GPT
partitions can have 128 partitions, so parse contiguous digits and then
validate that the number is between 1-128 inclusive.
I'm not sure 128 is a hard limit in the GPT standard, but it's the common
number in use, and it's a better upper limit than 9.
Modified:
head/stand/i386/gptboot/gptboot.c
Modified: head/stand/i386/gptboot/gptboot.c
==============================================================================
--- head/stand/i386/gptboot/gptboot.c Sun Dec 22 22:10:20 2019 (r356030)
+++ head/stand/i386/gptboot/gptboot.c Sun Dec 22 22:33:22 2019 (r356031)
@@ -574,10 +574,12 @@ parse_cmds(char *cmdstr, int *dskupdated)
if (arg[1] != 'p' || gdsk.dsk.unit > 9)
return (-1);
arg += 2;
- gdsk.dsk.part = *arg - '0';
- if (gdsk.dsk.part < 1 || gdsk.dsk.part > 9)
+ j = 0;
+ while (*arg >= '0' && *arg <= '9')
+ j = j * 10 + *arg++ - '0';
+ gdsk.dsk.part = j;
+ if (gdsk.dsk.part < 1 || gdsk.dsk.part > 128)
return (-1);
- arg++;
if (arg[0] != ')')
return (-1);
arg++;
More information about the svn-src-head
mailing list