• Eric Biggers's avatar
    crypto: arm/aes-neonbs - don't access already-freed walk.iv · ce28ca41
    Eric Biggers authored
    commit 767f015e 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.
    
    arm32 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 it was actually broken prior to
    the alignmask being removed by commit cc477bf6 ("crypto: arm/aes -
    replace bit-sliced OpenSSL NEON code").  Thus, update xts-aes-neonbs to
    start checking the return value of skcipher_walk_virt().
    
    Fixes: e4e7f10b ("ARM: add support for bit sliced AES using NEON instructions")
    Cc: <stable@vger.kernel.org> # v3.13+
    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>
    ce28ca41
aes-neonbs-glue.c 10.8 KB