mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-08 08:58:00 +00:00
Fix buffer overflow in NEON SHA-384 output.
An obvious goof - in SHA-384, you don't want to write out the last of the four state vectors! Fortunately I spotted it only a couple of hours after introducing it.
This commit is contained in:
parent
456120cfac
commit
31cd5ee19b
13
sshsh512.c
13
sshsh512.c
@ -749,6 +749,17 @@ static void sha512_neon_digest(ssh_hash *hash, uint8_t *digest)
|
||||
vst1q_u8(digest+48, vrev64q_u8(vreinterpretq_u8_u64(s->core.gh)));
|
||||
}
|
||||
|
||||
static void sha384_neon_digest(ssh_hash *hash, uint8_t *digest)
|
||||
{
|
||||
sha512_neon *s = container_of(hash, sha512_neon, hash);
|
||||
|
||||
sha512_block_pad(&s->blk, BinarySink_UPCAST(s));
|
||||
|
||||
vst1q_u8(digest, vrev64q_u8(vreinterpretq_u8_u64(s->core.ab)));
|
||||
vst1q_u8(digest+16, vrev64q_u8(vreinterpretq_u8_u64(s->core.cd)));
|
||||
vst1q_u8(digest+32, vrev64q_u8(vreinterpretq_u8_u64(s->core.ef)));
|
||||
}
|
||||
|
||||
const ssh_hashalg ssh_sha512_hw = {
|
||||
.new = sha512_neon_new,
|
||||
.reset = sha512_neon_reset,
|
||||
@ -765,7 +776,7 @@ const ssh_hashalg ssh_sha384_hw = {
|
||||
.new = sha512_neon_new,
|
||||
.reset = sha512_neon_reset,
|
||||
.copyfrom = sha512_neon_copyfrom,
|
||||
.digest = sha512_neon_digest,
|
||||
.digest = sha384_neon_digest,
|
||||
.free = sha512_neon_free,
|
||||
.hlen = 48,
|
||||
.blocklen = 128,
|
||||
|
Loading…
Reference in New Issue
Block a user