• Eric Biggers's avatar
    crypto: arm64/aes-neonbs - don't access already-freed walk.iv · 7ea9b157
    Eric Biggers authored
    commit 4a8108b7 upstream.
    
    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.
    
    xts-aes-neonbs doesn't set an alignmask, so currently it isn't affected
    by this despite unconditionally accessing walk.iv.  However this is more
    subtle than desired, and unconditionally accessing walk.iv has caused a
    real problem in other algorithms.  Thus, update xts-aes-neonbs to start
    checking the return value of skcipher_walk_virt().
    
    Fixes: 1abee99e ("crypto: arm64/aes - reimplement bit-sliced ARM/NEON implementation for arm64")
    Cc: <stable@vger.kernel.org> # v4.11+
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    7ea9b157
aes-neonbs-glue.c 12.1 KB