Skip to content
Snippets Groups Projects
Commit 3ef46a99 authored by Nikolay Dimitrov's avatar Nikolay Dimitrov Committed by Tom Rini
Browse files

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: default avatarNikolay Dimitrov <picmaster@mail.bg>
Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
parent d210718d
No related branches found
No related tags found
No related merge requests found
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{ {
char *s; char *s;
#ifdef CONFIG_HASH_VERIFY
int flags = HASH_FLAG_ENV; int flags = HASH_FLAG_ENV;
#ifdef CONFIG_HASH_VERIFY
if (argc < 4) if (argc < 4)
return CMD_RET_USAGE; return CMD_RET_USAGE;
if (!strcmp(argv[1], "-v")) { if (!strcmp(argv[1], "-v")) {
...@@ -28,8 +28,6 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) ...@@ -28,8 +28,6 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
argc--; argc--;
argv++; argv++;
} }
#else
const int flags = HASH_FLAG_ENV;
#endif #endif
/* Move forward to 'algorithm' parameter */ /* Move forward to 'algorithm' parameter */
argc--; argc--;
...@@ -40,19 +38,19 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) ...@@ -40,19 +38,19 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
} }
#ifdef CONFIG_HASH_VERIFY #ifdef CONFIG_HASH_VERIFY
U_BOOT_CMD( #define HARGS 6
hash, 6, 1, do_hash,
"compute hash message digest",
"algorithm address count [[*]sum_dest]\n"
" - compute message digest [save to env var / *address]\n"
"hash -v algorithm address count [*]sum\n"
" - verify hash of memory area with env var / *address"
);
#else #else
#define HARGS 5
#endif
U_BOOT_CMD( U_BOOT_CMD(
hash, 5, 1, do_hash, hash, HARGS, 1, do_hash,
"compute message digest", "compute hash message digest",
"algorithm address count [[*]sum_dest]\n" "algorithm address count [[*]hash_dest]\n"
" - compute message digest [save to env var / *address]" " - compute message digest [save to env var / *address]"
); #ifdef CONFIG_HASH_VERIFY
"\nhash -v algorithm address count [*]hash\n"
" - verify message digest of memory area to immediate value, \n"
" env var or *address"
#endif #endif
);
...@@ -256,7 +256,7 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str, ...@@ -256,7 +256,7 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str,
env_var = 1; env_var = 1;
} }
if (env_var) { if (!env_var) {
ulong addr; ulong addr;
void *buf; void *buf;
...@@ -347,7 +347,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag, ...@@ -347,7 +347,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
{ {
ulong addr, len; ulong addr, len;
if (argc < 2) if ((argc < 2) || ((flags & HASH_FLAG_VERIFY) && (argc < 3)))
return CMD_RET_USAGE; return CMD_RET_USAGE;
addr = simple_strtoul(*argv++, NULL, 16); 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, ...@@ -380,8 +380,6 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
#else #else
if (0) { if (0) {
#endif #endif
if (!argc)
return CMD_RET_USAGE;
if (parse_verify_sum(algo, *argv, vsum, if (parse_verify_sum(algo, *argv, vsum,
flags & HASH_FLAG_ENV)) { flags & HASH_FLAG_ENV)) {
printf("ERROR: %s does not contain a valid " printf("ERROR: %s does not contain a valid "
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment