• Eric Biggers's avatar
    crypto: arm/aes-neonbs - don't access already-freed walk.iv · 767f015e
    Eric Biggers authored
    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>
    767f015e
aes-neonbs-glue.c 10.8 KB