From 6b19a074018743646d4142f41beac38c98c47033 Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Sun, 20 Apr 2008 13:22:34 +0300 Subject: ubi-utils: improve input parameters checks Signed-off-by: Artem Bityutskiy --- ubi-utils/new-utils/src/ubiformat.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'ubi-utils/new-utils/src/ubiformat.c') diff --git a/ubi-utils/new-utils/src/ubiformat.c b/ubi-utils/new-utils/src/ubiformat.c index e49c84b..8bb6cfc 100644 --- a/ubi-utils/new-utils/src/ubiformat.c +++ b/ubi-utils/new-utils/src/ubiformat.c @@ -129,6 +129,8 @@ static int parse_opt(int argc, char * const argv[]) args.subpage_size = ubiutils_get_bytes(optarg); if (args.subpage_size <= 0) return errmsg("bad sub-page size: \"%s\"", optarg); + if (!is_power_of_2(args.subpage_size)) + return errmsg("sub-page size should be power of 2"); break; case 'O': @@ -516,10 +518,15 @@ int main(int argc, char * const argv[]) if (args.subpage_size == 0) args.subpage_size = mtd.min_io_size; - else if (args.subpage_size > mtd.min_io_size || - mtd.min_io_size % args.subpage_size) { - errmsg("bad sub-page size %d", args.subpage_size); - goto out_close; + else { + if (args.subpage_size > mtd.min_io_size) { + errmsg("sub-page cannot be larger then min. I/O unit"); + goto out_close; + } + + if (mtd.min_io_size % args.subpage_size) { + errmsg("min. I/O unit size should be multiple of sub-page size"); + } } /* -- cgit v1.2.3