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"

Reply via email to