diff options
author | David S. Miller <davem@davemloft.net> | 2014-10-02 14:52:37 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2014-10-02 14:52:37 +0800 |
commit | a666510bebfd1215501196ab2b9853ae1d53be6c (patch) | |
tree | 3ab9ae4fb3a7c16852457719feea43c7e95418bd /crypto/sha256_generic.c | |
parent | 340274c558571a7a2733b66c7c0367ae9f108e03 (diff) | |
download | linux-crypto-a666510bebfd1215501196ab2b9853ae1d53be6c.tar.gz linux-crypto-a666510bebfd1215501196ab2b9853ae1d53be6c.zip |
crypto: sha - Handle unaligned input data in generic sha256 and sha512.
Like SHA1, use get_unaligned_be*() on the raw input data.
Reported-by: Bob Picco <bob.picco@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r-- | crypto/sha256_generic.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/sha256_generic.c b/crypto/sha256_generic.c index 54336677..0bb55834 100644 --- a/crypto/sha256_generic.c +++ b/crypto/sha256_generic.c @@ -24,6 +24,7 @@ #include <linux/types.h> #include <crypto/sha.h> #include <asm/byteorder.h> +#include <asm/unaligned.h> static inline u32 Ch(u32 x, u32 y, u32 z) { @@ -42,7 +43,7 @@ static inline u32 Maj(u32 x, u32 y, u32 z) static inline void LOAD_OP(int I, u32 *W, const u8 *input) { - W[I] = __be32_to_cpu( ((__be32*)(input))[I] ); + W[I] = get_unaligned_be32((__u32 *)input + I); } static inline void BLEND_OP(int I, u32 *W) |