On 3/10/25 4:27 AM, Stuart Henderson wrote:
To see how things are going with API changes, I've tested building
everything in OpenBSD ports which depends on this. (I'm not suggesting
that Net-SNMP needs to change anything unless these are unexpected, but
at least giving other package maintainers a heads-up on what might be
affected).

Thank you for having done this before Net-SNMP version 5.10 is released.

gnugk:

snmp.cxx:87:11: error: expected '(' for function-style cast or type construction
         trapOID[ OID_LENGTH(trapOID) - 1 ] = trapNumber;
                  ^~~~~~~~~~~~~~~~~~~
/usr/local/include/net-snmp/library/asn1.h:65:56: note: expanded from macro 
'OID_LENGTH'
      sizeof(int[-__builtin_types_compatible_p(typeof(x), typeof(&(x)[0]))]))
                                               ~~~~~~~~~^
snmp.cxx:87:11: error: expected '(' for function-style cast or type construction
         trapOID[ OID_LENGTH(trapOID) - 1 ] = trapNumber;
                   ^~~~~~~~~~~~~~~~~~~

What compiler and flags have been selected by the configure script of
gnugk? Use of __builtin_types_compatible_p() is guarded as follows in
the Net-SNMP headers:

#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
#define OID_LENGTH(x)                                                   \
    (sizeof(x) / sizeof((x)[0]) +                                       \
sizeof(int[-__builtin_types_compatible_p(typeof(x), typeof(&(x)[0]))]))
#else
#define OID_LENGTH(x)  (sizeof(x) / sizeof((x)[0]))
#endif

ntopng:
various from snmp_sess_* functions taking struct session_list * rather
than void *, and also

Unless anyone objects, I will look into modifying these functions such
that these accept a void * pointer again.

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;
                                                      ^~~~~~~~~~~~~~~~~~~~~~

The above error indicates a potential memory corruption issue in ntopng.
Any pointer assigned to snmpSession->session.securityAuthProto should
point at dynamically allocated memory and not to a static array. The
code for freeing session->securityAuthProto in snmplib/snmp_api.c is 26
years old if I interpret the git history correctly.

Bart.


_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to