Patchwork [U-Boot] hash.c: Correct non-hash subcommand crc32 addr-save support

login
register
mail settings
Submitter Tom Rini
Date Nov. 7, 2013, 12:39 p.m.
Message ID <1383827988-8512-1-git-send-email-trini@ti.com>
Download mbox | patch
Permalink /patch/289310/
State Accepted
Delegated to: Tom Rini
Headers show

Comments

Tom Rini - Nov. 7, 2013, 12:39 p.m.
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 <trini@ti.com>
---
 common/hash.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Tom Rini - Nov. 25, 2013, 9:56 p.m.
On Thu, Nov 07, 2013 at 07:39:48AM -0500, Tom Rini wrote:

> 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 <trini@ti.com>

Applied to u-boot/master, thanks!

Patch

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;
 		}
 	}