97 lines
3.4 KiB
Diff
97 lines
3.4 KiB
Diff
From 80629a576c18dbf132cd9d6a3a6bfc7ae3af516d Mon Sep 17 00:00:00 2001
|
|
From: algorithmofdish <hexiujun1@huawei.com>
|
|
Date: Wed, 26 Apr 2023 16:58:02 +0800
|
|
Subject: [PATCH] fix: fix fd leakage problem
|
|
|
|
Conficts: src/probes/extends/ebpf.probe/src/{lib->stackprobe}/java_support.c
|
|
|
|
---
|
|
src/probes/extends/ebpf.probe/src/haproxyprobe/trace_haproxy.c | 4 ++++
|
|
src/probes/extends/ebpf.probe/src/stackprobe/java_support.c | 2 ++
|
|
test/test_probes/test_probes.c | 6 ++++++
|
|
3 files changed, 12 insertions(+)
|
|
|
|
diff --git a/src/probes/extends/ebpf.probe/src/haproxyprobe/trace_haproxy.c b/src/probes/extends/ebpf.probe/src/haproxyprobe/trace_haproxy.c
|
|
index 39e1827..cc5e771 100644
|
|
--- a/src/probes/extends/ebpf.probe/src/haproxyprobe/trace_haproxy.c
|
|
+++ b/src/probes/extends/ebpf.probe/src/haproxyprobe/trace_haproxy.c
|
|
@@ -55,8 +55,12 @@ static void get_host_ip(const unsigned char *value, unsigned short family)
|
|
}
|
|
|
|
fp = popen(cmd, "r");
|
|
+ if (fp == NULL) {
|
|
+ return;
|
|
+ }
|
|
if (fgets(buffer, INET6_ADDRSTRLEN, fp) == NULL) {
|
|
printf("Fail get_host_ip.\n");
|
|
+ (void)pclose(fp);
|
|
return ;
|
|
}
|
|
(void)pclose(fp);
|
|
diff --git a/src/probes/extends/ebpf.probe/src/stackprobe/java_support.c b/src/probes/extends/ebpf.probe/src/stackprobe/java_support.c
|
|
index 1aacb99..4a2c736 100644
|
|
--- a/src/probes/extends/ebpf.probe/src/stackprobe/java_support.c
|
|
+++ b/src/probes/extends/ebpf.probe/src/stackprobe/java_support.c
|
|
@@ -211,6 +211,7 @@ static int __check_proc_to_attach(int proc_obj_map_fd)
|
|
|
|
while (fgets(line, sizeof(line), f)) {
|
|
if (sscanf(line, "%d", &pid) != 1) {
|
|
+ (void)pclose(f);
|
|
return -1;
|
|
}
|
|
if (proc_obj_map_fd != 0) { // whitelist_enable
|
|
@@ -241,6 +242,7 @@ static int __check_proc_to_attach(int proc_obj_map_fd)
|
|
}
|
|
|
|
}
|
|
+ (void)pclose(f);
|
|
return ret;
|
|
}
|
|
|
|
diff --git a/test/test_probes/test_probes.c b/test/test_probes/test_probes.c
|
|
index 6f23117..3c608ca 100644
|
|
--- a/test/test_probes/test_probes.c
|
|
+++ b/test/test_probes/test_probes.c
|
|
@@ -332,14 +332,17 @@ void TestSystemProcProbe(void)
|
|
snprintf(cmd, COMMAND_LEN - 1, "touch /tmp/gala-gopher-app.conf");
|
|
f = popen(cmd, "r");
|
|
CU_ASSERT(f != NULL);
|
|
+ (void)pclose(f);
|
|
|
|
snprintf(cmd, COMMAND_LEN - 1, "echo \'application = ({ comm = \"sleep\", cmdline = \"\"})\' >/tmp/gala-gopher-app.conf");
|
|
f = popen(cmd, "r");
|
|
CU_ASSERT(f != NULL);
|
|
+ (void)pclose(f);
|
|
|
|
snprintf(cmd, COMMAND_LEN - 1, "sleep 60 &");
|
|
f = popen(cmd, "r");
|
|
CU_ASSERT(f != NULL);
|
|
+ (void)pclose(f);
|
|
|
|
system_proc_init(¶ms.task_whitelist);
|
|
CU_ASSERT(¶ms.task_whitelist != NULL);
|
|
@@ -353,10 +356,12 @@ void TestSystemProcProbe(void)
|
|
snprintf(cmd, COMMAND_LEN - 1, "rm -rf /tmp/gala-gopher-app.conf");
|
|
f = popen(cmd, "r");
|
|
CU_ASSERT(f != NULL);
|
|
+ (void)pclose(f);
|
|
|
|
snprintf(cmd, COMMAND_LEN - 1, "rm -rf /sys/fs/bpf/gala-gopher");
|
|
f = popen(cmd, "r");
|
|
CU_ASSERT(f != NULL);
|
|
+ (void)pclose(f);
|
|
|
|
ProbeDestroy(g_probe);
|
|
system_proc_destroy();
|
|
@@ -388,6 +393,7 @@ void TestEventProbe(void)
|
|
snprintf(cmd, COMMAND_LEN - 1, "echo \"%s\" >> /var/log/messages", EVENT_ERR_CODE);
|
|
f = popen(cmd, "r");
|
|
CU_ASSERT(f != NULL);
|
|
+ pclose(f);
|
|
|
|
g_probe = ProbeCreate();
|
|
CU_ASSERT(g_probe != NULL);
|
|
--
|
|
2.33.0
|
|
|