diff options
Diffstat (limited to 'flash_unlock.c')
-rw-r--r-- | flash_unlock.c | 20 |
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); |