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.
This commit is contained in:
parent
e15cbf74d1
commit
42e08952bb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=356031
@ -574,10 +574,12 @@ parse_cmds(char *cmdstr, int *dskupdated)
|
|||||||
if (arg[1] != 'p' || gdsk.dsk.unit > 9)
|
if (arg[1] != 'p' || gdsk.dsk.unit > 9)
|
||||||
return (-1);
|
return (-1);
|
||||||
arg += 2;
|
arg += 2;
|
||||||
gdsk.dsk.part = *arg - '0';
|
j = 0;
|
||||||
if (gdsk.dsk.part < 1 || gdsk.dsk.part > 9)
|
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);
|
return (-1);
|
||||||
arg++;
|
|
||||||
if (arg[0] != ')')
|
if (arg[0] != ')')
|
||||||
return (-1);
|
return (-1);
|
||||||
arg++;
|
arg++;
|
||||||
|
Loading…
Reference in New Issue
Block a user