secDetector/Backport-fix-the-memory-leak-in-collect-unit.patch
hurricane618 5ed2d22ec2 backport patchs to fix memory leak
backport patchs to fix memory leak

Signed-off-by: hurricane618 <hurricane618@hotmail.com>
2023-12-21 19:41:36 +08:00

66 lines
3.2 KiB
Diff

From fb0b9eeccc697b2b8935ed5a643ef30efaad19f7 Mon Sep 17 00:00:00 2001
From: yieux <yangxy79315@sina.com>
Date: Mon, 18 Dec 2023 09:28:15 +0800
Subject: [PATCH] fix the memory leak in collect unit
---
.../core/analyze_unit/secDetector_save_check.c | 13 +++++++------
.../core/collect_unit/secDetector_collect.c | 1 +
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/kerneldriver/core/analyze_unit/secDetector_save_check.c b/kerneldriver/core/analyze_unit/secDetector_save_check.c
index 0ab40ce..4a5f689 100644
--- a/kerneldriver/core/analyze_unit/secDetector_save_check.c
+++ b/kerneldriver/core/analyze_unit/secDetector_save_check.c
@@ -124,7 +124,7 @@ static int analyze_save_check_normal(struct list_head *collect_data_list, analyz
break;
}
if (measure_value != analyze_status_data->sc_data.data[data_index]) {
- pr_debug("[save_check]%s: original: %lld; now: %lld.!\n",
+ pr_warn("[save_check]%s: original: %llu; now: %llu.!\n",
cd->name, analyze_status_data->sc_data.data[data_index], measure_value);
response_arrays[response_array_index] = kzalloc(strlen(cd->name) + REPORT_MORE_CHAR_LEN, GFP_KERNEL);
if (response_arrays[response_array_index] == NULL) {
@@ -136,13 +136,13 @@ static int analyze_save_check_normal(struct list_head *collect_data_list, analyz
strcpy(response_arrays[response_array_index], " secswitch_name=");
//应该有 workflow的名字
strncat(response_arrays[response_array_index], cd->name, strlen(cd->name));
- strcat(response_arrays[response_array_index]," old_value=");
- sprintf(int_str, "%lld", analyze_status_data->sc_data.data[data_index]);
+ strcat(response_arrays[response_array_index], " old_value=");
+ sprintf(int_str, "%llu", analyze_status_data->sc_data.data[data_index]);
strncat(response_arrays[response_array_index], int_str, strlen(int_str));
- strcat(response_arrays[response_array_index]," new_value=");
- sprintf(int_str, "%lld", measure_value);
+ strcat(response_arrays[response_array_index], " new_value=");
+ sprintf(int_str, "%llu", measure_value);
strncat(response_arrays[response_array_index], int_str, strlen(int_str));
- strcat(response_arrays[response_array_index],".\n");
+ strcat(response_arrays[response_array_index], ".");
response_data_char_len += strlen(response_arrays[response_array_index]);
ret = RESPONSE_REPORT;
@@ -168,6 +168,7 @@ static int analyze_save_check_normal(struct list_head *collect_data_list, analyz
}
for (i = 0; i < response_array_index; i++)
strncat(response_data->report_data.text, response_arrays[i], strlen(response_arrays[i]));
+ strcat(response_data->report_data.text, "\n");
}
end:
for (i = 0; i < response_array_index; i++)
diff --git a/kerneldriver/core/collect_unit/secDetector_collect.c b/kerneldriver/core/collect_unit/secDetector_collect.c
index c04dd33..2240577 100644
--- a/kerneldriver/core/collect_unit/secDetector_collect.c
+++ b/kerneldriver/core/collect_unit/secDetector_collect.c
@@ -32,6 +32,7 @@ struct collect_data *init_collect_data(const char *name)
cd->name = kmalloc(nl + 1, GFP_KERNEL);
if (cd->name == NULL) {
pr_err("kmalloc failed");
+ kfree(cd);
return NULL;
}
strncpy(cd->name, name, nl);
--
2.33.0