From ea1046dc461e63c4a3de2b77dc141acd23746963 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 7 Mar 2026 03:00:35 +0000 Subject: util/nvmutil: unambiguous sign conv_argv_part_num yeah, do the verification manually, don't convert to size_t. this avoids a bunch of theoretical bugs that i can't be bothered to explain at 3AM just trust me bro Signed-off-by: Leah Rowe --- util/nvmutil/nvmutil.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 7bd61704..3f08d932 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -331,10 +331,12 @@ conv_argv_part_num(const char *part_str) if (part_str[0] == '\0' || part_str[1] != '\0') err(EINVAL, "Partnum string '%s' wrong length", part_str); - ch = (unsigned char)part_str[0] - '0'; + ch = (unsigned char)part_str[0]; - check_part_num((size_t)ch); - return (size_t)ch; + if (ch < '0' || ch > '1') + err(EINVAL, "Bad part number (%c)", ch); + + return (size_t)(ch - '0'); } static void -- cgit v1.2.1