Date: Sun, 22 Dec 2019 22:33:22 +0000 (UTC) From: Ian Lepore <ian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r356031 - head/stand/i386/gptboot Message-ID: <201912222233.xBMMXMqu050000@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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++;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912222233.xBMMXMqu050000>