The only limit set by specification is: A minimum of 16,384 bytes of space must be reserved for the GPT Partition Entry Array.
>From this size and array entry size we do get 128, but specification does not >limit the max number. rgds, toomas > On 23. Dec 2019, at 00:33, Ian Lepore <i...@freebsd.org> wrote: > > 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++; _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"