diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 3ff0d1d93..c62c7766a 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -32,6 +32,7 @@ #include #include #include +#include #ifdef HAVE_VALGRIND #include @@ -543,6 +544,7 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)), char *val; double v; uint64_t v_tmp, adjustment; + char *radixchar = nl_langinfo(RADIXCHAR); av->percent = PERCENT_NONE; @@ -565,6 +567,14 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)), return 0; } + + if (!isdigit(*val) && + (*val != '.') && + (radixchar && (*val != radixchar[0]))) { + log_error("Size requires number argument."); + return 0; + } + errno = 0; v = strtod(val, &ptr);