From e767dc103a142e1c57800f06a9c384f21a48aef5 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 3e6cb911..b90e0ffa 100644 --- a/src/snmp.c +++ b/src/snmp.c @@ -1437,8 +1437,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.30.2