aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flash_unlock.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/flash_unlock.c b/flash_unlock.c
index 6443605..7a7a773 100644
--- a/flash_unlock.c
+++ b/flash_unlock.c
@@ -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);