From 7c073e3a1b736689135fd2ed44ede5b83790bd37 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Mon, 26 Aug 2019 18:32:08 -0700 Subject: IP-MIB, Linux: Fix a memory leak in an error path When a Linux system is booted with "ipv6.disable=1" in the kernel command line, the file "/proc/net/snmp6" is not created. Fix the memory leak in _systemstats_v6_load_systemstats() that is triggered with IPv6 disabled. See also https://sourceforge.net/p/net-snmp/bugs/2976/. Reported-by: Mark E Rusk --- agent/mibgroup/ip-mib/data_access/systemstats_linux.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c index e28ff93..f68d122 100644 --- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c +++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c @@ -560,10 +560,12 @@ _systemstats_v6_load_systemstats(netsnmp_container* container, u_int load_flags) * try to open file. If we can't, that's ok - maybe the module hasn't * been loaded yet. */ - if (!(devin = fopen(filename, "r"))) { + devin = fopen(filename, "r"); + if (!devin) { DEBUGMSGTL(("access:systemstats", "Failed to load Systemstats Table (linux1), cannot open %s\n", filename)); + netsnmp_access_systemstats_entry_free(entry); return 0; } -- 2.7.4