From 611a0dec7317fa0441a5923a8e825e804060c998 Mon Sep 17 00:00:00 2001 From: vegbir Date: Thu, 27 Jul 2023 07:07:55 +0000 Subject: [PATCH 04/15] fix memory leak Signed-off-by: vegbir --- src/proc_fuse.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/proc_fuse.c b/src/proc_fuse.c index cde48ca..ed70ea7 100644 --- a/src/proc_fuse.c +++ b/src/proc_fuse.c @@ -304,6 +304,8 @@ static uint64_t get_min_memlimit(const char *cgroup, bool swap) return log_error_errno(0, ENOMEM, "Failed to allocate memory"); retlimit = get_memlimit(copy, swap); + if (retlimit == 0) + return 0; /* * If the cgroup doesn't start with / (probably won't happen), dirname() @@ -409,6 +411,8 @@ static int proc_swaps_read(char *buf, size_t size, off_t offset, prune_init_slice(cgroup); memlimit = get_min_memlimit(cgroup, false); + if (memlimit == 0) + return 0; ret = cgroup_ops->get_memory_current(cgroup_ops, cgroup, &memusage_str); if (ret < 0) @@ -1453,6 +1457,8 @@ static int proc_meminfo_read(char *buf, size_t size, off_t offset, return read_file_fuse("/proc/meminfo", buf, size, d); memlimit = get_min_memlimit(cgroup, false); + if (memlimit == 0) + return 0; /* * Following values are allowed to fail, because swapaccount might be @@ -1467,9 +1473,9 @@ static int proc_meminfo_read(char *buf, size_t size, off_t offset, memusage /= 1024; memlimit /= 1024; + char *printme, lbuf[100]; while (getline(&line, &linelen, f) != -1) { ssize_t l; - char *printme, lbuf[100]; memset(lbuf, 0, 100); if (startswith(line, "MemTotal:")) { -- 2.41.0