aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>2016-09-12 13:43:30 +0300
committerJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>2016-09-15 16:04:21 +0300
commitebfd7532e985818a327906e011f3e43c8ddfdd74 (patch)
tree33c2acaeeba0454ace929e77fd7ab228e7870edc /drivers/char
parenttpm: constify TPM 1.x header structures (diff)
downloadlinux-dev-ebfd7532e985818a327906e011f3e43c8ddfdd74.tar.xz
linux-dev-ebfd7532e985818a327906e011f3e43c8ddfdd74.zip
tpm: add check for minimum buffer size in tpm_transmit()
tpm_transmit() does not check that bufsiz is at least TPM_HEADER_SIZE before accessing data. This commit adds this check and returns -EINVAL if it fails. Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/tpm/tpm-interface.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index 3970f843acd1..8de61876f633 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -337,6 +337,9 @@ ssize_t tpm_transmit(struct tpm_chip *chip, const u8 *buf, size_t bufsiz,
u32 count, ordinal;
unsigned long stop;
+ if (bufsiz < TPM_HEADER_SIZE)
+ return -EINVAL;
+
if (bufsiz > TPM_BUFSIZE)
bufsiz = TPM_BUFSIZE;