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:
Ian Lepore 2019-12-22 22:33:22 +00:00
parent e15cbf74d1
commit 42e08952bb

View File

@ -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++;