From 9b4b5d449ef7045d33b8d8d7e69011d16f4bb8ab Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sun, 16 Jul 2017 10:30:07 +0200 Subject: [PATCH] lvmcmdline: enhance acceptance of size numbers Explictely detect duplicate sing symbols and leave the rest of double number validation on 'strtod()' function. This way we can also accept size like: lvcreate -L.1M We already accept -L0.1M - but it's common to accept numbers starting with leading '.' - just as 'strtod()' accepts it). --- tools/lvmcmdline.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 9cf214488..3ff0d1d93 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -560,8 +560,10 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)), av->sign = SIGN_NONE; } - if (!isdigit(*val)) + if (*val == '+' || *val == '-') { + log_error("Multiple sign symbols detected."); return 0; + } errno = 0; v = strtod(val, &ptr); @@ -596,6 +598,7 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)), break; if (i < 0) { + log_error("Can't parse size argument."); return 0; } else if (i == 7) { /* v is already in sectors */ -- 2.43.5