2019-03-29 14:12:17 +08:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
2019-01-18 08:24:39 +08:00
|
|
|
From: Cliff Cai <cliff.cai@intel.com>
|
|
|
|
Date: Tue, 15 Jan 2019 04:47:54 +0000
|
2019-03-29 14:12:17 +08:00
|
|
|
Subject: [PATCH] keystore: fix memory leaks
|
2019-01-18 08:24:39 +08:00
|
|
|
|
|
|
|
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
|
2020-10-27 02:14:06 +08:00
|
|
|
index d97dd469d404..5db0a7ea7e10 100644
|
2019-01-18 08:24:39 +08:00
|
|
|
--- 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
|
2020-10-27 02:14:06 +08:00
|
|
|
index 92d2a4bed416..c9640644b583 100644
|
2019-01-18 08:24:39 +08:00
|
|
|
--- 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
|
2020-10-27 02:14:06 +08:00
|
|
|
index 92307502d198..b4324949bf65 100644
|
2019-01-18 08:24:39 +08:00
|
|
|
--- 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
|
2020-10-27 02:14:06 +08:00
|
|
|
index 4f13df6b93d4..fe6477a9f86e 100644
|
2019-01-18 08:24:39 +08:00
|
|
|
--- 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
--
|
2019-04-08 18:08:36 +08:00
|
|
|
https://clearlinux.org
|
2019-01-18 08:24:39 +08:00
|
|
|
|