]> www.infradead.org Git - mtd-utils.git/commitdiff
flash_{un,}lock: improve strtol() error handling
authorBrian Norris <computersforpeace@gmail.com>
Mon, 31 Aug 2015 21:34:02 +0000 (14:34 -0700)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 11 Nov 2015 22:05:36 +0000 (14:05 -0800)
Use the simple_* helpers to improve error checking.

Also fixup brace style at the same time.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
flash_unlock.c

index 644360548601a20a97f3078871db65fc75426baa..7a7a773d1d763875d719987518812b17a1a126c2 100644 (file)
@@ -147,8 +147,8 @@ int main(int argc, char *argv[])
        int fd, request;
        struct mtd_info_user mtdInfo;
        struct erase_info_user mtdLockInfo;
-       int count;
-       int ret;
+       long count;
+       int ret = 0;
 
        process_args(argc, argv);
 
@@ -161,22 +161,28 @@ int main(int argc, char *argv[])
                sys_errmsg_die("could not get mtd info: %s", dev);
 
        /* Make sure user options are valid */
-       if (offs_s)
-               mtdLockInfo.start = strtol(offs_s, NULL, 0);
-       else
+       if (offs_s) {
+               mtdLockInfo.start = simple_strtol(offs_s, &ret);
+               if (ret)
+                       errmsg_die("bad offset");
+       } else {
                mtdLockInfo.start = 0;
+       }
        if (mtdLockInfo.start > mtdInfo.size)
                errmsg_die("%#x is beyond device size %#x",
                        mtdLockInfo.start, mtdInfo.size);
 
        if (count_s) {
-               count = strtol(count_s, NULL, 0);
+               count = simple_strtol(count_s, &ret);
+               if (ret)
+                       errmsg_die("bad count");
                if (count == -1)
                        mtdLockInfo.length = mtdInfo.size;
                else
                        mtdLockInfo.length = mtdInfo.erasesize * count;
-       } else
+       } else {
                mtdLockInfo.length = mtdInfo.size;
+       }
        if (mtdLockInfo.start + mtdLockInfo.length > mtdInfo.size)
                errmsg_die("range is more than device supports: %#x + %#x > %#x",
                        mtdLockInfo.start, mtdLockInfo.length, mtdInfo.size);