From 5c04fdf8ce4dfc35cd36084d7feeca1a11dfedab Mon Sep 17 00:00:00 2001 From: Corey Hickey Date: Sun, 23 Jan 2022 17:23:39 -0800 Subject: [PATCH] badblocks: print a more explanatory message when a parameter is too large Before: $ misc/badblocks -w -b 4294967296 -c 1 /tmp/testfile.bin misc/badblocks: invalid block size - 4294967296 After: $ misc/badblocks -w -b 4294967296 -c 1 /tmp/testfile.bin misc/badblocks: block size too large - 4294967296 The original error is retained for invalid arguments, e.g.: $ misc/badblocks -w -b foo -c 1 /tmp/testfile.bin misc/badblocks: invalid block size - foo Signed-off-by: Corey Hickey Signed-off-by: Theodore Ts'o --- misc/badblocks.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/misc/badblocks.c b/misc/badblocks.c index 3dedf7630..85a53b01f 100644 --- a/misc/badblocks.c +++ b/misc/badblocks.c @@ -1036,10 +1036,13 @@ static unsigned int parse_uint(const char *str, const char *descr) errno = 0; ret = strtoul(str, &tmp, 0); - if (*tmp || errno || (ret > UINT_MAX) || - (ret == ULONG_MAX && errno == ERANGE)) { + if (*tmp || errno) { com_err (program_name, 0, _("invalid %s - %s"), descr, str); exit (1); + } else if ((ret > UINT_MAX) || + (ret == ULONG_MAX && errno == ERANGE)) { + com_err (program_name, 0, _("%s too large - %lu"), descr, ret); + exit (1); } return ret; } -- 2.39.2