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>
This commit is contained in:
parent
d210718d9a
commit
3ef46a998a
@ -18,9 +18,9 @@
|
||||
static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
char *s;
|
||||
#ifdef CONFIG_HASH_VERIFY
|
||||
int flags = HASH_FLAG_ENV;
|
||||
|
||||
#ifdef CONFIG_HASH_VERIFY
|
||||
if (argc < 4)
|
||||
return CMD_RET_USAGE;
|
||||
if (!strcmp(argv[1], "-v")) {
|
||||
@ -28,8 +28,6 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
argc--;
|
||||
argv++;
|
||||
}
|
||||
#else
|
||||
const int flags = HASH_FLAG_ENV;
|
||||
#endif
|
||||
/* Move forward to 'algorithm' parameter */
|
||||
argc--;
|
||||
@ -40,19 +38,19 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HASH_VERIFY
|
||||
U_BOOT_CMD(
|
||||
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"
|
||||
);
|
||||
#define HARGS 6
|
||||
#else
|
||||
U_BOOT_CMD(
|
||||
hash, 5, 1, do_hash,
|
||||
"compute message digest",
|
||||
"algorithm address count [[*]sum_dest]\n"
|
||||
" - compute message digest [save to env var / *address]"
|
||||
);
|
||||
#define HARGS 5
|
||||
#endif
|
||||
|
||||
U_BOOT_CMD(
|
||||
hash, HARGS, 1, do_hash,
|
||||
"compute hash message digest",
|
||||
"algorithm address count [[*]hash_dest]\n"
|
||||
" - 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
|
||||
);
|
||||
|
@ -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 "
|
||||
|
Loading…
Reference in New Issue
Block a user