Merge pull request #5703 from wentaoshang/fix-sha256
hashes: support unaligned memory access in be32enc_vect
This commit is contained in:
commit
ac4cc0849e
@ -64,13 +64,25 @@
|
||||
*/
|
||||
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_;
|
||||
const uint32_t *src = src_;
|
||||
|
||||
for (size_t i = 0; i < len / 4; 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];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Decode a big-endian length len vector of (unsigned char) into a length
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user