
From: Stephen Warren swarren@nvidia.com
Most arguments to the shell command do_fsload() implements are optional. Fix the minimum argc check to respect that. Cater for the situation where argv[2] is not provided.
Enhance both do_fsload() and do_ls() to check the maximum number of arguments too. While this check would typically be implemented via U_BOOT_CMD()'s max_args parameter, if these functions are called directly, then that check won't exist.
Finally, alter do_ls() to check (argc >= 4) rather than (argc == 4) so that if the function is enhanced to allow extra arguments in the future, this test won't need to be changed at that time.
Signed-off-by: Stephen Warren swarren@nvidia.com --- fs/fs.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/fs/fs.c b/fs/fs.c index e148a07..f570312 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -258,10 +258,12 @@ int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], int len_read; char buf[12];
- if (argc < 5) + if (argc < 2) + return CMD_RET_USAGE; + if (argc > 7) return CMD_RET_USAGE;
- if (fs_set_blk_dev(argv[1], argv[2], fstype)) + if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL, fstype)) return 1;
if (argc >= 4) { @@ -308,11 +310,13 @@ int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], { if (argc < 2) return CMD_RET_USAGE; + if (argc > 4) + return CMD_RET_USAGE;
if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL, fstype)) return 1;
- if (fs_ls(argc == 4 ? argv[3] : "/")) + if (fs_ls(argc >= 4 ? argv[3] : "/")) return 1;
return 0;