fdisk: use strtoul[l] instead of atoi, closes 11176
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 25 Jul 2018 10:08:26 +0000 (12:08 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 30 Jul 2018 16:02:27 +0000 (18:02 +0200)
Couldn't create partitions bigger than 1TB (when using 512 bytes sectors,
on 32 bits architectures).

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
util-linux/fdisk.c
util-linux/fdisk_sun.c

index cdcba0a03767ec2c35310c6192b2abc446b79711..e47bc7324c663c2ca03b6a2f264e38b6c519a0f2 100644 (file)
@@ -169,9 +169,9 @@ typedef unsigned long long ullong;
  * do not support more than 2^32 sectors
  */
 typedef uint32_t sector_t;
-#if UINT_MAX == 4294967295
+#if UINT_MAX == 0xffffffff
 # define SECT_FMT ""
-#elif ULONG_MAX == 4294967295
+#elif ULONG_MAX == 0xffffffff
 # define SECT_FMT "l"
 #else
 # error Cant detect sizeof(uint32_t)
@@ -1616,7 +1616,10 @@ read_int(sector_t low, sector_t dflt, sector_t high, sector_t base, const char *
                        int minus = (*line_ptr == '-');
                        int absolute = 0;
 
-                       value = atoi(line_ptr + 1);
+                       if (sizeof(value) <= sizeof(long))
+                               value = strtoul(line_ptr + 1, NULL, 10);
+                       else
+                               value = strtoull(line_ptr + 1, NULL, 10);
 
                        /* (1) if 2nd char is digit, use_default = 0.
                         * (2) move line_ptr to first non-digit. */
index e32740dea4531460677f093571b3927ee2b486ba..f62a53ac6a81ca7385a0f8b38b40d292cff18d42 100644 (file)
@@ -606,7 +606,7 @@ sun_change_sysid(int i, int sys)
                        "there may destroy your partition table and bootblock.\n"
                        "Type YES if you're very sure you would like that partition\n"
                        "tagged with 82 (Linux swap): ");
-               if (strcmp (line_ptr, "YES\n"))
+               if (strcmp(line_ptr, "YES\n"))
                        return;
        }
        switch (sys) {