Core dump with net-snmp-5.8

Josef Ridky <[email protected]>
Newsgroups gmane.network.net-snmp.devel
Message-ID <[email protected]>
Hi,

recently, I have hit to an issue in net-snmp-5.8, that is connected to the bug report [1].

When I tried to run agentofdeath test from [1], snmpd daemon will crash with malloc(): smallbin double linked list corrupted or double free() issue and dumps core (see bellow).
From log file, I can identified one issue with "Unknown operation".

This issue is in the agentx_got_response function (agent/mibgroup/agentx/master.c). There isn't implemented action for NETSNMP_CALLBACK_OP_RESEND (defined in include/net-snmp/library/snmp_api.h).
As result "Unknown operation 6 in agentx_got_response" is shown in log file.

/var/log/messages
-------------------------------
Mar 28 06:52:42 localhost snmpd[12073]: Unknown operation 6 in agentx_got_response
Mar 28 06:52:43 localhost snmpd[12073]: Unknown operation 6 in agentx_got_response
Mar 28 06:52:43 localhost snmpd[12073]: malloc(): smallbin double linked list corrupted
Mar 28 06:52:43 localhost systemd[1]: Started Process Core Dump (PID 13652/UID 0).
Mar 28 06:52:48 localhost systemd[1]: snmpd.service: Main process exited, code=dumped, status=6/ABRT
Mar 28 06:52:48 localhost systemd[1]: snmpd.service: Failed with result 'core-dump'.
-------------------------------

The "Unknown operation" callback is caused by newly added piece of code in snmplib/snmp_api.c:

 static int
 snmp_resend_request(struct session_list *slp, netsnmp_request_list *rp,
 int incr_retries)
 {

...

         tv.tv_sec += tv.tv_usec / 1000000L;
         tv.tv_usec %= 1000000L;
         rp->expireM = tv;
+        if (rp->callback)
+            rp->callback(NETSNMP_CALLBACK_OP_RESEND, sp,
+                         rp->pdu->reqid, rp->pdu, rp->cb_data);
     }
     return 0;
 }


When I tried to remove it, it just stop complaining about operation 6, but the core dump is still present.

May I ask you for help with this issue? Do you have any idea, what causing this issue in 5.8 and how to fix it? 
I know, that Jan Safranek has fixed this for 5.7 by commit [2], but it looks like something other has changed and this issue is current again. 

[1] https://sourceforge.net/p/net-snmp/bugs/2411/
[2] https://github.com/net-snmp/net-snmp/commit/793d596838ff7cb48a73b675d62897c56c9e62df

Regards

Josef Ridky
Software Engineer
Core Services Team
Red Hat Czech, s.r.o.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.