Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2:ARM
net-snmp
net-snmp-5.7.1-fix-snmpd-crashing-when-an-agent...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File net-snmp-5.7.1-fix-snmpd-crashing-when-an-agentx-disconnects.patch of Package net-snmp
commit f9304c83f76202db0e684269ca1af32e43cd9db4 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date: Tue Feb 7 14:53:44 2012 +0100 CHANGES: PATCH 1633670: fixed snmpd crashing when an AgentX subagent disconnect in the middle of processing of a request. I fixed also the memory leak reported in the tracker comments. Index: net-snmp-5.7.1/agent/mibgroup/agentx/master.c =================================================================== --- net-snmp-5.7.1.orig/agent/mibgroup/agentx/master.c +++ net-snmp-5.7.1/agent/mibgroup/agentx/master.c @@ -219,6 +219,9 @@ agentx_got_response(int operation, if (!cache) { DEBUGMSGTL(("agentx/master", "response too late on session %8p\n", session)); + /* response is too late, free the cache */ + if (magic) + netsnmp_free_delegated_cache((netsnmp_delegated_cache*) magic); return 0; } requests = cache->requests; @@ -606,6 +609,8 @@ agentx_master_handler(netsnmp_mib_handle result = snmp_async_send(ax_session, pdu, agentx_got_response, cb_data); if (result == 0) { snmp_free_pdu(pdu); + if (cb_data) + netsnmp_free_delegated_cache((netsnmp_delegated_cache*) cb_data); } return SNMP_ERR_NOERROR; Index: net-snmp-5.7.1/agent/mibgroup/agentx/master_admin.c =================================================================== --- net-snmp-5.7.1.orig/agent/mibgroup/agentx/master_admin.c +++ net-snmp-5.7.1/agent/mibgroup/agentx/master_admin.c @@ -135,11 +135,16 @@ close_agentx_session(netsnmp_session * s * requests, so that the delegated request will be completed and * further requests can be processed */ - netsnmp_remove_delegated_requests_for_session(session); + while (netsnmp_remove_delegated_requests_for_session(session)) { + DEBUGMSGTL(("agentx/master", "Continue removing delegated reqests\n")); + } + if (session->subsession != NULL) { netsnmp_session *subsession = session->subsession; for(; subsession; subsession = subsession->next) { - netsnmp_remove_delegated_requests_for_session(subsession); + while (netsnmp_remove_delegated_requests_for_session(subsession)) { + DEBUGMSGTL(("agentx/master", "Continue removing delegated subsession reqests\n")); + } } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor