From 4b756b013ae0159d77d34981b57f8590f8dba2ee Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Thu, 7 Nov 2013 07:39:48 -0500 Subject: [PATCH] hash.c: Correct non-hash subcommand crc32 addr-save support In the case of not having CONFIG_CMD_HASH but having CONFIG_CMD_CRC32 enabled (and not CONFIG_CRC32_VERIFY), we end up in this part of the code path on hash_command(). However, we will only have exactly 3 args here, and 3 > 3 is false, and we will not try and store the hash at the address given as arg #3. The next problem however is that we've been moving argv around so the third value is now in argv[0] not argv[3]. Confirmed on AM335x Beaglebone White. Signed-off-by: Tom Rini --- common/hash.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/hash.c b/common/hash.c index 722c40b..872cd85 100644 --- a/common/hash.c +++ b/common/hash.c @@ -325,8 +325,8 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag, printf("CRC32 for %08lx ... %08lx ==> %08lx\n", addr, addr + len - 1, crc); - if (argc > 3) { - ptr = (ulong *)simple_strtoul(argv[3], NULL, 16); + if (argc >= 3) { + ptr = (ulong *)simple_strtoul(argv[0], NULL, 16); *ptr = crc; } } -- 2.7.4