crypto: omap-aes - reject invalid input sizes for block modes
authorArd Biesheuvel <ardb@kernel.org>
Tue, 5 Nov 2019 14:01:00 +0000 (16:01 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 11 Dec 2019 08:36:59 +0000 (16:36 +0800)
Block modes such as ECB and CBC only support input sizes that are
a round multiple of the block size, so align with the generic code
which returns -EINVAL when encountering inputs that violate this
rule.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/omap-aes.c

index de05b35..067f4cd 100644 (file)
@@ -525,6 +525,9 @@ static int omap_aes_crypt(struct skcipher_request *req, unsigned long mode)
        struct omap_aes_dev *dd;
        int ret;
 
+       if ((req->cryptlen % AES_BLOCK_SIZE) && !(mode & FLAGS_CTR))
+               return -EINVAL;
+
        pr_debug("nbytes: %d, enc: %d, cbc: %d\n", req->cryptlen,
                  !!(mode & FLAGS_ENCRYPT),
                  !!(mode & FLAGS_CBC));