summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorOndrej Mosnáček <omosnace@redhat.com>2018-06-13 16:44:17 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2018-06-15 23:06:48 +0800
commit366a20ff6c66ccac3af29059fd5dda09011321e3 (patch)
tree7a5c502130b2b8684346c2b1be88438c01110ab7 /crypto
parent541739401092a3481bb33ffe56471205c6e9a4da (diff)
downloadlinux-crypto-366a20ff6c66ccac3af29059fd5dda09011321e3.tar.gz
linux-crypto-366a20ff6c66ccac3af29059fd5dda09011321e3.zip
crypto: morus640 - Fix out-of-bounds access
We must load the block from the temporary variable here, not directly from the input. Also add forgotten zeroing-out of the uninitialized part of the temporary block (as is done correctly in morus1280.c). Fixes: 4cc215a8b72d ("crypto: morus - Add generic MORUS AEAD implementations") Reported-by: syzbot+1fafa9c4cf42df33f716@syzkaller.appspotmail.com Reported-by: syzbot+d82643ba80bf6937cd44@syzkaller.appspotmail.com Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--crypto/morus640.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/morus640.c b/crypto/morus640.c
index 9fbcde30..5eede374 100644
--- a/crypto/morus640.c
+++ b/crypto/morus640.c
@@ -274,8 +274,9 @@ static void crypto_morus640_decrypt_chunk(struct morus640_state *state, u8 *dst,
union morus640_block_in tail;
memcpy(tail.bytes, src, size);
+ memset(tail.bytes + size, 0, MORUS640_BLOCK_SIZE - size);
- crypto_morus640_load_a(&m, src);
+ crypto_morus640_load_a(&m, tail.bytes);
crypto_morus640_core(state, &m);
crypto_morus640_store_a(tail.bytes, &m);
memset(tail.bytes + size, 0, MORUS640_BLOCK_SIZE - size);