diff options
| author | Stephen Warren <swarren@nvidia.com> | 2012-10-30 12:04:17 +0000 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2012-11-04 11:00:24 -0700 | 
| commit | e9b0f99e8243e3146f3b5f4ef91f4b6c8f4452c0 (patch) | |
| tree | 88a8c850a714be1cc7b2db07620732bdcedcd8bd /fs/fs.c | |
| parent | 51bdad67cb6738c5d0e78084cf3e3baa216f4d2f (diff) | |
| download | olio-uboot-2014.01-e9b0f99e8243e3146f3b5f4ef91f4b6c8f4452c0.tar.xz olio-uboot-2014.01-e9b0f99e8243e3146f3b5f4ef91f4b6c8f4452c0.zip | |
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: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Diffstat (limited to 'fs/fs.c')
| -rw-r--r-- | fs/fs.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| @@ -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; |