gala-gopher/fix-fix-fd-leakage-problem.patch
xietangxin 7a98e4aa4d sync bugfix
(cherry picked from commit f80b9a43fd947043bd90d948c921daeabc1f3b96)
2023-06-13 09:59:46 +08:00

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(&params.task_whitelist);
CU_ASSERT(&params.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