Reported by a zabbix developer. I have asked for a test, but I think this is likely to be correct, strdup is used in similar situations in other net-snmp code. OK if testing is positive?
Index: Makefile =================================================================== RCS file: /cvs/ports/net/net-snmp/Makefile,v retrieving revision 1.94 diff -u -p -r1.94 Makefile --- Makefile 12 Oct 2016 10:50:33 -0000 1.94 +++ Makefile 29 Sep 2017 14:55:23 -0000 @@ -4,7 +4,7 @@ COMMENT-main= extendable SNMP implementa COMMENT-tkmib= graphical SNMP MIB browser V= 5.7.3 -REVISION-main= 11 +REVISION-main= 12 DISTNAME= net-snmp-$V MULTI_PACKAGES= -main -tkmib Index: patches/patch-snmplib_snmp_api_c =================================================================== RCS file: patches/patch-snmplib_snmp_api_c diff -N patches/patch-snmplib_snmp_api_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-snmplib_snmp_api_c 29 Sep 2017 14:55:23 -0000 @@ -0,0 +1,32 @@ +$OpenBSD$ + +https://support.zabbix.com/browse/ZBX-12726 +https://sourceforge.net/p/net-snmp/bugs/2803/ + +Index: snmplib/snmp_api.c +--- snmplib/snmp_api.c.orig ++++ snmplib/snmp_api.c +@@ -1546,8 +1546,8 @@ _sess_open(netsnmp_session * in_session) + + if (NULL != in_session->localname) { + clientaddr_save = +- netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, +- NETSNMP_DS_LIB_CLIENT_ADDR); ++ strdup(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, ++ NETSNMP_DS_LIB_CLIENT_ADDR)); + netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, + NETSNMP_DS_LIB_CLIENT_ADDR, + in_session->localname); +@@ -1565,9 +1565,11 @@ _sess_open(netsnmp_session * in_session) + NULL); + } + +- if (NULL != clientaddr_save) ++ if (NULL != clientaddr_save) { + netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, + NETSNMP_DS_LIB_CLIENT_ADDR, clientaddr_save); ++ free(clientaddr_save); ++ } + } + + if (transport == NULL) {