clear-pkgs-linux-iot-lts2018/0862-keystore-fix-memory-le...

93 lines
2.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cliff Cai <cliff.cai@intel.com>
Date: Tue, 15 Jan 2019 04:47:54 +0000
Subject: [PATCH] keystore: fix memory leaks
Fix several memory leaks in the driver.
Change-Id: Ic3b0b0d4a05e9e51b4acfa198ae77abf11c91bea
Tracked-On: PKT-1674
Signed-off-by: Cliff Cai <cliff.cai@intel.com>
---
security/keystore/api_dal.c | 2 ++
security/keystore/applet_read.c | 4 +++-
security/keystore/dal_client.c | 5 ++++-
security/keystore/mac.c | 1 +
4 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/security/keystore/api_dal.c b/security/keystore/api_dal.c
index d97dd469d404..5db0a7ea7e10 100644
--- a/security/keystore/api_dal.c
+++ b/security/keystore/api_dal.c
@@ -803,6 +803,7 @@ int dal_keystore_encrypt(const uint8_t *client_ticket, int slot_id,
if (res) {
ks_err(KBUILD_MODNAME ": %s Error calculating client ID: %d\n",
__func__, res);
+ kzfree(in);
goto exit;
}
@@ -955,6 +956,7 @@ int dal_keystore_decrypt(const uint8_t *client_ticket, int slot_id,
if (res) {
ks_err(KBUILD_MODNAME ": %s Error calculating client ID: %d\n",
__func__, res);
+ kzfree(in);
goto exit;
}
diff --git a/security/keystore/applet_read.c b/security/keystore/applet_read.c
index 92d2a4bed416..c9640644b583 100644
--- a/security/keystore/applet_read.c
+++ b/security/keystore/applet_read.c
@@ -67,8 +67,10 @@ static int read_applet_file(struct file *file, u8 **out)
return -ENOMEM;
temp = kzalloc(i_size, GFP_KERNEL);
- if (!temp)
+ if (!temp) {
+ kzfree(file_buf);
return -ENOMEM;
+ }
if (!(file->f_mode & FMODE_READ)) {
file->f_mode |= FMODE_READ;
diff --git a/security/keystore/dal_client.c b/security/keystore/dal_client.c
index 92307502d198..b4324949bf65 100644
--- a/security/keystore/dal_client.c
+++ b/security/keystore/dal_client.c
@@ -16,6 +16,7 @@
#include <linux/dal.h>
#include <linux/printk.h>
+#include <linux/slab.h>
#include "dal_client.h"
#include "keystore_debug.h"
@@ -56,8 +57,10 @@ int install_applet(void)
dal_hdr.state = DAL_KSM_INIT;
ret = read_keystore_applet(CONFIG_DAL_KEYSTORE_APPLET_PATH, &acp_pkg,
&acp_pkg_len);
- if (ret != 0)
+ if (ret != 0) {
+ kzfree(&acp_pkg);
return ret;
+ }
if (acp_pkg == NULL) {
ks_err(KBUILD_MODNAME ": %s acp_pkg is NULL\n", __func__);
diff --git a/security/keystore/mac.c b/security/keystore/mac.c
index 4f13df6b93d4..fe6477a9f86e 100644
--- a/security/keystore/mac.c
+++ b/security/keystore/mac.c
@@ -138,6 +138,7 @@ int keystore_sha256_block(const void *data, unsigned int size,
if (result_size < crypto_shash_digestsize(tfm)) {
crypto_free_shash(tfm);
+ kzfree(sdesc);
return -EINVAL;
}
--
https://clearlinux.org