hash.c: Conditionally compile hash_command, static hash_show

The function hash_show is now only called by hash_command, so mark it as
static (and drop from hash.h).  We only call hash_command when any of
CONFIG_CMD_CRC32, CONFIG_CMD_SHA1SUM or CONFIG_CMD_HASH are set.  Since
hash.c is linked in unconditionally we must take extra care with
functions that bring in read-only strings as these will not be
discarded.

Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Tom Rini 2016-01-05 08:47:48 -05:00
parent d29892ba85
commit 48ad68deb8
2 changed files with 25 additions and 38 deletions

View file

@ -247,6 +247,29 @@ int hash_parse_string(const char *algo_name, const char *str, uint8_t *result)
return 0;
}
int hash_block(const char *algo_name, const void *data, unsigned int len,
uint8_t *output, int *output_size)
{
struct hash_algo *algo;
int ret;
ret = hash_lookup_algo(algo_name, &algo);
if (ret)
return ret;
if (output_size && *output_size < algo->digest_size) {
debug("Output buffer size %d too small (need %d bytes)",
*output_size, algo->digest_size);
return -ENOSPC;
}
if (output_size)
*output_size = algo->digest_size;
algo->hash_func_ws(data, len, output, algo->chunk_size);
return 0;
}
#if defined(CONFIG_CMD_HASH) || defined(CONFIG_CMD_SHA1SUM) || defined(CONFIG_CMD_CRC32)
/**
* store_result: Store the resulting sum to an address or variable
*
@ -359,7 +382,7 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str,
return 0;
}
void hash_show(struct hash_algo *algo, ulong addr, ulong len, uint8_t *output)
static void hash_show(struct hash_algo *algo, ulong addr, ulong len, uint8_t *output)
{
int i;
@ -368,28 +391,6 @@ void hash_show(struct hash_algo *algo, ulong addr, ulong len, uint8_t *output)
printf("%02x", output[i]);
}
int hash_block(const char *algo_name, const void *data, unsigned int len,
uint8_t *output, int *output_size)
{
struct hash_algo *algo;
int ret;
ret = hash_lookup_algo(algo_name, &algo);
if (ret)
return ret;
if (output_size && *output_size < algo->digest_size) {
debug("Output buffer size %d too small (need %d bytes)",
*output_size, algo->digest_size);
return -ENOSPC;
}
if (output_size)
*output_size = algo->digest_size;
algo->hash_func_ws(data, len, output, algo->chunk_size);
return 0;
}
int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
int argc, char * const argv[])
{
@ -473,3 +474,4 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
return 0;
}
#endif
#endif

View file

@ -114,21 +114,6 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
int hash_block(const char *algo_name, const void *data, unsigned int len,
uint8_t *output, int *output_size);
/**
* hash_show() - Print out a hash algorithm and value
*
* You will get a message like this (without a newline at the end):
*
* "sha1 for 9eb3337c ... 9eb3338f ==> 7942ef1df479fd3130f716eb9613d107dab7e257"
*
* @algo: Algorithm used for hash
* @addr: Address of data that was hashed
* @len: Length of data that was hashed
* @output: Hash value to display
*/
void hash_show(struct hash_algo *algo, ulong addr, ulong len,
uint8_t *output);
#endif /* !USE_HOSTCC */
/**