Skip to content
Snippets Groups Projects
Commit e9b0f99e authored by Stephen Warren's avatar Stephen Warren Committed by Tom Rini
Browse files

fs: fix do_fsload() handling of optional arguments


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: default avatarStephen Warren <swarren@nvidia.com>
Reviewed-by: default avatarBenoît Thébaudeau <benoit.thebaudeau@advansee.com>
parent 51bdad67
No related branches found
No related tags found
No related merge requests found
...@@ -258,10 +258,12 @@ int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], ...@@ -258,10 +258,12 @@ int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
int len_read; int len_read;
char buf[12]; char buf[12];
if (argc < 5) if (argc < 2)
return CMD_RET_USAGE;
if (argc > 7)
return CMD_RET_USAGE; 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; return 1;
if (argc >= 4) { if (argc >= 4) {
...@@ -308,11 +310,13 @@ int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], ...@@ -308,11 +310,13 @@ int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
{ {
if (argc < 2) if (argc < 2)
return CMD_RET_USAGE; return CMD_RET_USAGE;
if (argc > 4)
return CMD_RET_USAGE;
if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL, fstype)) if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL, fstype))
return 1; return 1;
if (fs_ls(argc == 4 ? argv[3] : "/")) if (fs_ls(argc >= 4 ? argv[3] : "/"))
return 1; return 1;
return 0; return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment