mirror of
https://github.com/torvalds/linux.git
synced 2026-09-11 20:13:02 +02:00
s390/zcrypt: Fix uninitialized padding in CRT key structure
The zcrypt_type6_crt_key() function leaves padding bytes uninitialized between key components and the modulus in the CCA CRT key token. These padding bytes are sent to the crypto card, potentially leaking kernel memory contents. The initial memset() only zeros fixed structure fields, not the flexible array member key_parts[] where the padding resides. While key components are properly copied from userspace, the calculated pad_len bytes between them remain uninitialized. Fix by explicitly zeroing the padding bytes after copying the CRT key components. Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Reviewed-by: Finn Callies <fcallies@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
33123ff9cb
commit
98d23edcd4
|
|
@ -219,6 +219,7 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p)
|
|||
copy_from_user(key->key_parts + 2 * long_len + 2 * short_len,
|
||||
crt->u_mult_inv, long_len))
|
||||
return -EFAULT;
|
||||
memset(key->key_parts + 3 * long_len + 2 * short_len, 0, pad_len);
|
||||
memset(key->key_parts + 3 * long_len + 2 * short_len + pad_len,
|
||||
0xff, crt->inputdatalength);
|
||||
pub = (struct cca_public_sec *)(key->key_parts + key_len);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user