Merge pull request #5703 from wentaoshang/fix-sha256

hashes: support unaligned memory access in be32enc_vect
This commit is contained in:
kYc0o 2016-08-02 15:54:10 +02:00 committed by GitHub
commit ac4cc0849e

View File

@ -64,12 +64,24 @@
*/ */
static void be32enc_vect(void *dst_, const void *src_, size_t len) static void be32enc_vect(void *dst_, const void *src_, size_t len)
{ {
if ((uintptr_t)dst_ % sizeof(uint32_t) == 0 &&
(uintptr_t)src_ % sizeof(uint32_t) == 0) {
uint32_t *dst = dst_; uint32_t *dst = dst_;
const uint32_t *src = src_; const uint32_t *src = src_;
for (size_t i = 0; i < len / 4; i++) { for (size_t i = 0; i < len / 4; i++) {
dst[i] = __builtin_bswap32(src[i]); dst[i] = __builtin_bswap32(src[i]);
} }
}
else {
uint8_t *dst = dst_;
const uint8_t *src = src_;
for (size_t i = 0; i < len; i += 4) {
dst[i] = src[i + 3];
dst[i + 1] = src[i + 2];
dst[i + 2] = src[i + 1];
dst[i + 3] = src[i];
}
}
} }
/* /*