On 3/10/25 4:27 AM, Stuart Henderson wrote:
ntopng:
various from snmp_sess_* functions taking struct session_list * rather
than void *, and also
src/SNMP.cpp:452:47: error: assigning to 'oid *' (aka 'unsigned long *') from
incompatible type 'const oid[10]' (aka 'const unsigned long[10]')
snmpSession->session.securityAuthProto = usmHMACMD5AuthProtocol;
After having taken a closer look at the ntopng source code, how about
submitting the following (untested) patch to the ntopng project? This
patch should be backwards compatible. This means that it works with both
Net-SNMP 5.10 and older versions of Net-SNMP.
Thanks,
Bart.
diff --git a/include/SNMPSession.h b/include/SNMPSession.h
index 932b3d96ce17..e12ef0a2f893 100644
--- a/include/SNMPSession.h
+++ b/include/SNMPSession.h
@@ -32,7 +32,7 @@
class SNMPSession {
public:
struct snmp_session session;
- void *session_ptr;
+ decltype(snmp_sess_open(NULL)) session_ptr;
SNMPSession();
~SNMPSession();
diff --git a/src/SNMP.cpp b/src/SNMP.cpp
index 1763bcac5175..f97e4969a432 100644
--- a/src/SNMP.cpp
+++ b/src/SNMP.cpp
@@ -453,13 +453,16 @@ bool SNMP::send_snmp_request(char *agent_host,
u_int version, char *community,
if((!strcasecmp(level, "authNoPriv")) ||
(!strcasecmp(level, "authPriv"))) {
if(!strcasecmp(auth_protocol, "md5")) {
- snmpSession->session.securityAuthProto =
usmHMACMD5AuthProtocol;
- snmpSession->session.securityAuthProtoLen =
- sizeof(usmHMACMD5AuthProtocol) / sizeof(oid);
+ const int len = sizeof(usmHMACMD5AuthProtocol) / sizeof(oid);
+ snmpSession->session.securityAuthProto =
+ static_cast<oid *>(netsnmp_memdup(usmHMACMD5AuthProtocol,
len));
+ snmpSession->session.securityAuthProtoLen = len;
snmpSession->session.securityAuthKeyLen = USM_AUTH_KU_LEN;
} else if(!strcasecmp(auth_protocol, "sha")) {
- snmpSession->session.securityAuthProto =
usmHMACSHA1AuthProtocol;
- snmpSession->session.securityAuthProtoLen =
sizeof(usmHMACSHA1AuthProtocol) / sizeof(oid);
+ const int len = sizeof(usmHMACSHA1AuthProtocol) / sizeof(oid);
+ snmpSession->session.securityAuthProto =
+ static_cast<oid
*>(netsnmp_memdup(usmHMACSHA1AuthProtocol, len));
+ snmpSession->session.securityAuthProtoLen = len;
snmpSession->session.securityAuthKeyLen = USM_AUTH_KU_LEN;
/* CHECK */
#ifdef usmHMAC192SHA256AuthProtocol
} else if(!strcasecmp(auth_protocol, "sha256")) {
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders