diff options
| author | Simon Glass <sjg@chromium.org> | 2013-02-24 17:33:32 +0000 | 
|---|---|---|
| committer | Simon Glass <sjg@chromium.org> | 2013-02-28 19:49:13 -0800 | 
| commit | 218da0f35f4b5e5bf13d3dba6d975d4d5d65516f (patch) | |
| tree | 0601a777e77d4c582882426e5aefcd3541032be5 | |
| parent | bd091b67d0ef2959ed0ff2aa6575ddb0d21c1f71 (diff) | |
| download | olio-uboot-2014.01-218da0f35f4b5e5bf13d3dba6d975d4d5d65516f.tar.xz olio-uboot-2014.01-218da0f35f4b5e5bf13d3dba6d975d4d5d65516f.zip | |
hash: Use lower case for hash algorithm names
Rather than use strcasecmp() in the hash algorithm search, require the
caller to do this first. Most of U-Boot can use lower case anyway, and
the hash command can convert to lower case before calling hash_command().
This saves needing strcasecmp() for boards that use hashing but not
the hash command.
Signed-off-by: Simon Glass <sjg@chromium.org>
| -rw-r--r-- | common/cmd_hash.c | 4 | ||||
| -rw-r--r-- | common/hash.c | 11 | ||||
| -rw-r--r-- | include/hash.h | 2 | 
3 files changed, 11 insertions, 6 deletions
| diff --git a/common/cmd_hash.c b/common/cmd_hash.c index 8c03b5c72..4fe0e7861 100644 --- a/common/cmd_hash.c +++ b/common/cmd_hash.c @@ -26,9 +26,11 @@  #include <common.h>  #include <command.h>  #include <hash.h> +#include <linux/ctype.h>  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; @@ -45,6 +47,8 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  	/* Move forward to 'algorithm' parameter */  	argc--;  	argv++; +	for (s = *argv; *s; s++) +		*s = tolower(*s);  	return hash_command(*argv, flags, cmdtp, flag, argc - 1, argv + 1);  } diff --git a/common/hash.c b/common/hash.c index 0d04c4c9a..f5badcb93 100644 --- a/common/hash.c +++ b/common/hash.c @@ -32,7 +32,8 @@  /*   * These are the hash algorithms we support. Chips which support accelerated - * crypto could perhaps add named version of these algorithms here. + * crypto could perhaps add named version of these algorithms here. Note that + * algorithm names must be in lower case.   */  static struct hash_algo hash_algo[] = {  	/* @@ -42,7 +43,7 @@ static struct hash_algo hash_algo[] = {  	 */  #ifdef CONFIG_CMD_SHA1SUM  	{ -		"SHA1", +		"sha1",  		SHA1_SUM_LEN,  		sha1_csum_wd,  		CHUNKSZ_SHA1, @@ -51,7 +52,7 @@ static struct hash_algo hash_algo[] = {  #endif  #ifdef CONFIG_SHA256  	{ -		"SHA256", +		"sha256",  		SHA256_SUM_LEN,  		sha256_csum_wd,  		CHUNKSZ_SHA256, @@ -59,7 +60,7 @@ static struct hash_algo hash_algo[] = {  #define MULTI_HASH  #endif  	{ -		"CRC32", +		"crc32",  		4,  		crc32_wd_buf,  		CHUNKSZ_CRC32, @@ -202,7 +203,7 @@ static struct hash_algo *find_hash_algo(const char *name)  	int i;  	for (i = 0; i < ARRAY_SIZE(hash_algo); i++) { -		if (!strcasecmp(name, hash_algo[i].name)) +		if (!strcmp(name, hash_algo[i].name))  			return &hash_algo[i];  	} diff --git a/include/hash.h b/include/hash.h index f2b2c4520..2dbbd9b7d 100644 --- a/include/hash.h +++ b/include/hash.h @@ -61,7 +61,7 @@ enum {   *   * This common function is used to implement specific hash commands.   * - * @algo_name:		Hash algorithm being used + * @algo_name:		Hash algorithm being used (lower case!)   * @flags:		Flags value (HASH_FLAG_...)   * @cmdtp:		Pointer to command table entry   * @flag:		Some flags normally 0 (see CMD_FLAG_.. above) |