@@ -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);
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 | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-)