
Hi Nikolay,
On 12 December 2014 at 11:01, picmaster@mail.bg wrote:
From: Nikolay Dimitrov picmaster@mail.bg
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
Thanks for this. Main change looks good, a few nits.
common/cmd_hash.c | 28 +++++++++++++--------------- common/hash.c | 6 ++---- 2 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/common/cmd_hash.c b/common/cmd_hash.c index 90facbb..704d21e 100644 --- a/common/cmd_hash.c +++ b/common/cmd_hash.c @@ -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 +#define HARGS 5 +#endif
U_BOOT_CMD(
hash, 5, 1, do_hash,
"compute message digest",
"algorithm address count [[*]sum_dest]\n"
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"
Perhaps " verify message digest of memory area, display result or write to env var or *address"
#endif +); diff --git a/common/hash.c b/common/hash.c index 12d6759..aceabc5 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;
What does this change achieve?
if (parse_verify_sum(algo, *argv, vsum, flags & HASH_FLAG_ENV)) { printf("ERROR: %s does not contain a valid "
-- 1.7.10.4
Regards, Simon