mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
KEYS: trusted: Fix blob allocation size in tpm2_key_decode()
tpm2_key_decode() allocates 4 bytes more than needed. The ASN.1 callbacks tpm2_key_priv() and tpm2_key_pub() provide the lengths of TPM2B_PRIVATE and TPM2B_PUBLIC, so ctx.priv_len and ctx.pub_len already account for the 2-byte `size` field each of those structures starts with. I noticed this while reviewing commit114f00d738("KEYS: trusted: Fix tpm2_load_cmd() boundary check"), which correctly reports ctx.priv_len + ctx.pub_len as the decoded blob size [1]. Let's allocate exactly that amount, matching the data copied into the blob. [1] https://lore.kernel.org/linux-integrity/apfoKo-BdwaLXtkT@sgarzare-redhat/ Cc: stable@vger.kernel.org # v5.13+ Fixes:f221974525("security: keys: trusted: use ASN.1 TPM2 key format for the blobs") Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Link: https://lore.kernel.org/r/20260923173506.41519-1-sgarzare@redhat.com Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
This commit is contained in:
parent
f92d0ccb05
commit
11077cbcc2
|
|
@ -115,7 +115,7 @@ static int tpm2_key_decode(struct trusted_key_payload *payload,
|
|||
if (ctx.priv_len + ctx.pub_len > MAX_BLOB_SIZE)
|
||||
return -EINVAL;
|
||||
|
||||
blob = kmalloc(ctx.priv_len + ctx.pub_len + 4, GFP_KERNEL);
|
||||
blob = kmalloc(ctx.priv_len + ctx.pub_len, GFP_KERNEL);
|
||||
if (!blob)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user