]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/strutils: parse_size() fix frac with zeros
authorKarel Zak <kzak@redhat.com>
Mon, 13 May 2019 14:15:58 +0000 (16:15 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 13 May 2019 14:15:58 +0000 (16:15 +0200)
Fix 0.001G as well as accept 0.000G as valid number.

Signed-off-by: Karel Zak <kzak@redhat.com>
lib/strutils.c

index 369d5015912e6c30db5afe702cfe40d1df0287bf..327bf37bcf3549159cd2b697e6679bd5a5a61cd7 100644 (file)
@@ -122,13 +122,18 @@ check_suffix:
 
                        for (p = fstr; *p == '0'; p++)
                                frac_zeros++;
-                       errno = 0, end = NULL;
-                       frac = strtoumax(fstr, &end, 0);
-                       if (end == fstr ||
-                           (errno != 0 && (frac == UINTMAX_MAX || frac == 0))) {
-                               rc = errno ? -errno : -EINVAL;
-                               goto err;
-                       }
+                       fstr = p;
+                       if (isdigit(*fstr)) {
+                               errno = 0, end = NULL;
+                               frac = strtoumax(fstr, &end, 0);
+                               if (end == fstr ||
+                                   (errno != 0 && (frac == UINTMAX_MAX || frac == 0))) {
+                                       rc = errno ? -errno : -EINVAL;
+                                       goto err;
+                               }
+                       } else
+                               end = (char *) p;
+
                        if (frac && (!end  || !*end)) {
                                rc = -EINVAL;
                                goto err;               /* without suffix, but with frac */