From: Florian Forster Date: Wed, 10 Jun 2015 07:39:24 +0000 (+0100) Subject: tcpconns plugin: Fix memory leak. X-Git-Tag: collectd-5.5.1~116^2~9 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=d4f303606ea68f2f12c561772e5500e5a17e4c55;p=collectd.git tcpconns plugin: Fix memory leak. "prev" was set to NULL and never updated, leading to "port_list_head" to be set to an entry later in the list. This leaks memory because earlier entries in the list are now unreachable. Fixes: #1074 --- diff --git a/src/tcpconns.c b/src/tcpconns.c index 6351c7b6..f4c61d53 100644 --- a/src/tcpconns.c +++ b/src/tcpconns.c @@ -386,18 +386,18 @@ static void conn_reset_port_entry (void) /* If this entry was created while reading the files (ant not when handling * the configuration) remove it now. */ if ((pe->flags & (PORT_COLLECT_LOCAL - | PORT_COLLECT_REMOTE - | PORT_IS_LISTENING)) == 0) + | PORT_COLLECT_REMOTE + | PORT_IS_LISTENING)) == 0) { port_entry_t *next = pe->next; DEBUG ("tcpconns plugin: Removing temporary entry " - "for listening port %"PRIu16, pe->port); + "for listening port %"PRIu16, pe->port); if (prev == NULL) - port_list_head = next; + port_list_head = next; else - prev->next = next; + prev->next = next; sfree (pe); pe = next; @@ -409,6 +409,7 @@ static void conn_reset_port_entry (void) memset (pe->count_remote, '\0', sizeof (pe->count_remote)); pe->flags &= ~PORT_IS_LISTENING; + prev = pe; pe = pe->next; } } /* void conn_reset_port_entry */