]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.9.30/tpm_crb-check-for-bad-response-size.patch
Linux 4.14.95
[thirdparty/kernel/stable-queue.git] / releases / 4.9.30 / tpm_crb-check-for-bad-response-size.patch
CommitLineData
208fc782
GKH
1From 8569defde8057258835c51ce01a33de82e14b148 Mon Sep 17 00:00:00 2001
2From: Jerry Snitselaar <jsnitsel@redhat.com>
3Date: Fri, 10 Mar 2017 17:46:04 -0700
4Subject: tpm_crb: check for bad response size
5
6From: Jerry Snitselaar <jsnitsel@redhat.com>
7
8commit 8569defde8057258835c51ce01a33de82e14b148 upstream.
9
10Make sure size of response buffer is at least 6 bytes, or
11we will underflow and pass large size_t to memcpy_fromio().
12This was encountered while testing earlier version of
13locality patchset.
14
15Fixes: 30fc8d138e912 ("tpm: TPM 2.0 CRB Interface")
16Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
17Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
18Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20
21---
22 drivers/char/tpm/tpm_crb.c | 3 +--
23 1 file changed, 1 insertion(+), 2 deletions(-)
24
25--- a/drivers/char/tpm/tpm_crb.c
26+++ b/drivers/char/tpm/tpm_crb.c
27@@ -111,8 +111,7 @@ static int crb_recv(struct tpm_chip *chi
28
29 memcpy_fromio(buf, priv->rsp, 6);
30 expected = be32_to_cpup((__be32 *) &buf[2]);
31-
32- if (expected > count)
33+ if (expected > count || expected < 6)
34 return -EIO;
35
36 memcpy_fromio(&buf[6], &priv->rsp[6], expected - 6);