From patchwork Tue Oct 30 22:04:17 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [U-Boot,1/3] fs: fix do_fsload() handling of optional arguments Date: Tue, 30 Oct 2012 12:04:17 -0000 From: Stephen Warren X-Patchwork-Id: 195635 Message-Id: <1351634659-16107-1-git-send-email-swarren@wwwdotorg.org> To: Tom Rini , =?UTF-8?q?Beno=C3=AEt=20Th=C3=A9baudeau?= Cc: u-boot@lists.denx.de, Stephen Warren , Rob Herring From: Stephen Warren 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 Reviewed-by: Benoît Thébaudeau --- 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;