]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/zcrypt: Validate length for CCA ECC private key requests
authorHolger Dengler <dengler@linux.ibm.com>
Wed, 29 Jul 2026 09:36:16 +0000 (11:36 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Fri, 31 Jul 2026 11:31:19 +0000 (13:31 +0200)
cca_ecc2protkey() derives the copy length for the CPRB parameter
block directly from the length field in the key token. Reject the
request early if the token length exceeds the available space in the
parameter block.

Fixes: fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC private keys")
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
Cc: stable@vger.kernel.org # 5.10+
Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
drivers/s390/crypto/zcrypt_ccamisc.c

index db6a4211a97e0a0e42be6654eea95a20df719c94..322677a8d3200955d54022eb1544ee359f6be418 100644 (file)
@@ -1428,6 +1428,9 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
        } __packed * prepparm;
        int keylen = ((struct eccprivkeytoken *)key)->len;
 
+       if (keylen > PARMBSIZE - sizeof(struct aureqparm))
+               return -EINVAL;
+
        /* get already prepared memory for 2 cprbs with param block each */
        rc = alloc_and_prep_cprbmem(PARMBSIZE, &mem,
                                    &preqcblk, &prepcblk, xflags);