From: Pierre-Yves Ritschard Date: Wed, 19 Nov 2014 15:00:54 +0000 (+0100) Subject: Let snmp_synch_response deal with PDU freeing X-Git-Tag: collectd-5.4.2~8 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=9d6f72e5054cfbb183585991fefcf119259d71c4 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 --- 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)