FAILED: patch "[PATCH] tpm: fix response size validation in tpm_get_random()" failed to apply to 4.18-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
84b59f6487d82d3ab4247a099aba66d4d17e8b08Mon Sep 17 00:00:00 2001
From: Jarkko Sakkinen <[email protected]>
Date: Mon, 3 Sep 2018 04:01:26 +0300
Subject: [PATCH] tpm: fix response size validation in tpm_get_random()
When checking whether the response is large enough to be able to contain the received random bytes in tpm_get_random() and tpm2_get_random(), they fail to take account the header size, which should be added to the minimum size. This commit fixes this issue.
drivers/char/tpm/tpm-interface.c +2 -1
@@ -1321,7 +1321,8 @@ int tpm_get_random(struct tpm_chip *chip, u8 *out, size_t max) } rlength =be32_to_cpu (tpm_cmd.header.out.length); -if (rlength < offsetof(struct tpm_getrandom_out , rng_data) + +if (rlength <TPM_HEADER_SIZE + + offsetof(struct tpm_getrandom_out , rng_data) + recd) { total = -EFAULT ;break ;
drivers/char/tpm/tpm2-cmd.c +3 -1
@@ -329,7 +329,9 @@ int tpm2_get_random(struct tpm_chip *chip, u8 *dest, size_t max) &buf.data[TPM_HEADER_SIZE ]; recd =min_t (u32,be16_to_cpu (out->size), num_bytes);if (tpm_buf_length (&buf) < - offsetof(struct tpm2_get_random_out , buffer) + recd) { +TPM_HEADER_SIZE + + offsetof(struct tpm2_get_random_out , buffer) + + recd) { err = -EFAULT ; goto out; }