aboutsummaryrefslogtreecommitdiff
path: root/common/hash.c
diff options
context:
space:
mode:
authorNikolay Dimitrov2014-12-12 20:01:23 +0200
committerTom Rini2014-12-29 16:31:24 -0500
commit3ef46a998a2f2c52e227246ac0438ca048ddfd09 (patch)
treeaed0170b1d6c5148a5815566133739f97a91f1cc /common/hash.c
parentd210718d9a184c5b00b7ee729e746ff8be5570bb (diff)
Fix hash verification
Fix issue in parse_verify_sum() which swaps handling of env-var and *address. Move hash_command() argc check earlier. Cosmetic change on do_hash() variable declaration. Improved help message for "hash" command. Signed-off-by: Nikolay Dimitrov <picmaster@mail.bg> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/hash.c')
-rw-r--r--common/hash.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/common/hash.c b/common/hash.c
index 12d67594abe..aceabc5cadd 100644
--- a/common/hash.c
+++ b/common/hash.c
@@ -256,7 +256,7 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str,
env_var = 1;
}
- if (env_var) {
+ if (!env_var) {
ulong addr;
void *buf;
@@ -347,7 +347,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
{
ulong addr, len;
- if (argc < 2)
+ if ((argc < 2) || ((flags & HASH_FLAG_VERIFY) && (argc < 3)))
return CMD_RET_USAGE;
addr = simple_strtoul(*argv++, NULL, 16);
@@ -380,8 +380,6 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
#else
if (0) {
#endif
- if (!argc)
- return CMD_RET_USAGE;
if (parse_verify_sum(algo, *argv, vsum,
flags & HASH_FLAG_ENV)) {
printf("ERROR: %s does not contain a valid "