diff options
author | Eric Biggers <ebiggers@google.com> | 2019-04-09 23:46:29 -0700 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2019-04-18 22:14:58 +0800 |
commit | d7d6ee7fed4a1ca36350883d64aee8195a0f2487 (patch) | |
tree | c1108c537eac2d36d7b6e4944897de1db52a2182 /crypto/asymmetric_keys/signature.c | |
parent | 0224cedfcf6e9a35b35dac4e313f036d8083530f (diff) | |
download | linux-crypto-d7d6ee7fed4a1ca36350883d64aee8195a0f2487.tar.gz linux-crypto-d7d6ee7fed4a1ca36350883d64aee8195a0f2487.zip |
crypto: lrw - don't access already-freed walk.iv
If the user-provided IV needs to be aligned to the algorithm's
alignmask, then skcipher_walk_virt() copies the IV into a new aligned
buffer walk.iv. But skcipher_walk_virt() can fail afterwards, and then
if the caller unconditionally accesses walk.iv, it's a use-after-free.
Fix this in the LRW template by checking the return value of
skcipher_walk_virt().
This bug was detected by my patches that improve testmgr to fuzz
algorithms against their generic implementation. When the extra
self-tests were run on a KASAN-enabled kernel, a KASAN use-after-free
splat occured during lrw(aes) testing.
Fixes: d1ae9155d30e ("crypto: lrw - Optimize tweak computation")
Cc: <stable@vger.kernel.org> # v4.20+
Cc: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/asymmetric_keys/signature.c')
0 files changed, 0 insertions, 0 deletions