]> sourceware.org Git - lvm2.git/commitdiff
lvmcmdline: restore digit check
authorZdenek Kabelac <zkabelac@redhat.com>
Mon, 17 Jul 2017 18:36:39 +0000 (20:36 +0200)
committerZdenek Kabelac <zkabelac@redhat.com>
Mon, 17 Jul 2017 18:54:42 +0000 (20:54 +0200)
Commit 9b4b5d449ef7045d33b8d8d7e69011d16f4bb8ab started to accept
rather way to wide set of strings we do not want to take for size.
i.e.  lvresize -t vg0/lvol0 -LNaNM

Restore check for 'digit ||  locales defined 'dot' |  '.'
(as we tend to take '.' even if locales uses ',')

tools/lvmcmdline.c

index 3ff0d1d93cc4347f59ecce312920f01854fe67b9..c62c7766a7f1e39a9c57a1af3197835007795ffe 100644 (file)
@@ -32,6 +32,7 @@
 #include <dirent.h>
 #include <paths.h>
 #include <locale.h>
+#include <langinfo.h>
 
 #ifdef HAVE_VALGRIND
 #include <valgrind.h>
@@ -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);
 
This page took 0.036206 seconds and 5 git commands to generate.