From 781f635e0a1bb1f85b4e415f21eea68181c3f8dd Mon Sep 17 00:00:00 2001 From: Pierre-Yves Ritschard Date: Wed, 19 Nov 2014 16:00:54 +0100 Subject: [PATCH] Let snmp_synch_response deal with PDU freeing When reading from tables, upon errors the PDUs sent are already freed by snmp_synch_response since they are right after snmp_send is called. This commit syncs collectd's approach with other occurences of snmp_synch_response calls. There might be a few corner cases where we leak PDUs, but it is unclear how to check for those since we would need to have an indication that snmp_send was never called, which as far as I can tell is not possible. The potential for failure in snmp_send is rather low and will be easily spotted though, since when crafting invalid PDUs snmp send will constantly fail and since valid configurations can never leak memory. This fixes #804 --- src/snmp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/snmp.c b/src/snmp.c index 7d6e0a10..6466503b 100644 --- a/src/snmp.c +++ b/src/snmp.c @@ -1618,8 +1618,9 @@ static int csnmp_read_table (host_definition_t *host, data_definition_t *data) snmp_free_pdu (res); res = NULL; - if (req != NULL) - snmp_free_pdu (req); + /* + * memory is handled by snmp_synch_response + */ req = NULL; if (status == 0) -- 2.11.0