提交 ed80c931 编写于 作者: T Taylor Hutt 提交者: Andy Fleming

mmc: Fix incorrect handling of 'read' & 'write' commands

If a malformed 'read' or 'write' command is issued, the Sandbox U-Boot
can crash because the command-handling code does no error checking on
the number of provided arguments.

This change makes the mmc 'erase', 'read' and 'write' commands only
function if the proper number of arguments are supplied.

Also puts the else assignment at the beginning fo the if() statement
to shortens the generated code.  This removes an unnecessary jump from
the generated code.
Signed-off-by: NTaylor Hutt <thutt@chromium.org>
Signed-off-by: NSimon Glass <sjg@chromium.org>
Signed-off-by: NAndy Fleming <afleming@freescale.com>
上级 19815399
......@@ -250,14 +250,13 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return 0;
}
if (strcmp(argv[1], "read") == 0)
state = MMC_INVALID;
if (argc == 5 && strcmp(argv[1], "read") == 0)
state = MMC_READ;
else if (strcmp(argv[1], "write") == 0)
else if (argc == 5 && strcmp(argv[1], "write") == 0)
state = MMC_WRITE;
else if (strcmp(argv[1], "erase") == 0)
else if (argc == 4 && strcmp(argv[1], "erase") == 0)
state = MMC_ERASE;
else
state = MMC_INVALID;
if (state != MMC_INVALID) {
struct mmc *mmc = find_mmc_device(curr_device);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册