summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f596915)
raw | patch | inline | side by side (parent: f596915)
author | Florian Forster <octo@collectd.org> | |
Wed, 10 Jun 2015 07:39:24 +0000 (08:39 +0100) | ||
committer | Florian Forster <octo@collectd.org> | |
Wed, 10 Jun 2015 07:39:24 +0000 (08:39 +0100) |
"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
be set to an entry later in the list. This leaks memory because earlier
entries in the list are now unreachable.
Fixes: #1074
src/tcpconns.c | patch | blob | history |
diff --git a/src/tcpconns.c b/src/tcpconns.c
index 6351c7b68853390905b35b327a101d4af58ee960..f4c61d539618f960c3fd8cf1740ec2c41a67b4ba 100644 (file)
--- a/src/tcpconns.c
+++ b/src/tcpconns.c
/* 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;
memset (pe->count_remote, '\0', sizeof (pe->count_remote));
pe->flags &= ~PORT_IS_LISTENING;
+ prev = pe;
pe = pe->next;
}
} /* void conn_reset_port_entry */