diff --git a/stand/i386/gptboot/gptboot.c b/stand/i386/gptboot/gptboot.c index 68ef55073ecb..7b5423ede6d8 100644 --- a/stand/i386/gptboot/gptboot.c +++ b/stand/i386/gptboot/gptboot.c @@ -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++;