Skip to content

Commit

Permalink
sandbox: Allow hash functions to work correctly
Browse files Browse the repository at this point in the history
Use map_sysmem() so that hashing is possible on sandbox.

Signed-off-by: Simon Glass <[email protected]>
  • Loading branch information
sjg20 committed Mar 1, 2013
1 parent 5512d5b commit bd091b6
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions common/hash.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <hash.h>
#include <sha1.h>
#include <sha256.h>
#include <asm/io.h>

/*
* These are the hash algorithms we support. Chips which support accelerated
Expand Down Expand Up @@ -117,10 +118,13 @@ static void store_result(struct hash_algo *algo, const u8 *sum,
str_ptr = '\0';
setenv(dest, str_output);
} else {
u8 *ptr;
ulong addr;
void *buf;

ptr = (u8 *)simple_strtoul(dest, NULL, 16);
memcpy(ptr, sum, algo->digest_size);
addr = simple_strtoul(dest, NULL, 16);
buf = map_sysmem(addr, algo->digest_size);
memcpy(buf, sum, algo->digest_size);
unmap_sysmem(buf);
}
}

Expand Down Expand Up @@ -154,10 +158,12 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str, u8 *vsum,
}

if (env_var) {
u8 *ptr;
ulong addr;
void *buf;

ptr = (u8 *)simple_strtoul(verify_str, NULL, 16);
memcpy(vsum, ptr, algo->digest_size);
addr = simple_strtoul(verify_str, NULL, 16);
buf = map_sysmem(addr, algo->digest_size);
memcpy(vsum, buf, algo->digest_size);
} else {
unsigned int i;
char *vsum_str;
Expand Down Expand Up @@ -228,6 +234,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
struct hash_algo *algo;
u8 output[HASH_MAX_DIGEST_SIZE];
u8 vsum[HASH_MAX_DIGEST_SIZE];
void *buf;

algo = find_hash_algo(algo_name);
if (!algo) {
Expand All @@ -241,8 +248,9 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
return 1;
}

algo->hash_func_ws((const unsigned char *)addr, len, output,
algo->chunk_size);
buf = map_sysmem(addr, len);
algo->hash_func_ws(buf, len, output, algo->chunk_size);
unmap_sysmem(buf);

/* Try to avoid code bloat when verify is not needed */
#ifdef CONFIG_HASH_VERIFY
Expand Down

0 comments on commit bd091b6

Please sign in to comment.