From 7906084ba2fd50022f38ce2e8d0bcef212a4ff19 Mon Sep 17 00:00:00 2001 From: Chuck Silvers Date: Sat, 9 May 2026 17:52:14 +0200 Subject: [PATCH] Fix some memory leaks when fetching the mibII. Reviewed by: glebius Sponsored by: Netflix Differential Revision: --- contrib/bsnmp/snmp_mibII/mibII.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/bsnmp/snmp_mibII/mibII.c b/contrib/bsnmp/snmp_mibII/mibII.c index 59f3836d1ed..4cf4f231fac 100644 --- a/contrib/bsnmp/snmp_mibII/mibII.c +++ b/contrib/bsnmp/snmp_mibII/mibII.c @@ -485,6 +485,7 @@ mib_fetch_ifmib(struct mibif *ifp) syslog(LOG_WARNING, "sysctl linkmib estimate (%s): %m", ifp->name); if (ifp->specmib != NULL) { + free(ifp->specmib); ifp->specmib = NULL; ifp->specmiblen = 0; } @@ -492,6 +493,7 @@ mib_fetch_ifmib(struct mibif *ifp) } if (len == 0) { if (ifp->specmib != NULL) { + free(ifp->specmib); ifp->specmib = NULL; ifp->specmiblen = 0; } @@ -500,6 +502,7 @@ mib_fetch_ifmib(struct mibif *ifp) if (ifp->specmiblen != len) { if ((newmib = realloc(ifp->specmib, len)) == NULL) { + free(ifp->specmib); ifp->specmib = NULL; ifp->specmiblen = 0; goto out; @@ -510,6 +513,7 @@ mib_fetch_ifmib(struct mibif *ifp) if (sysctl(name, nitems(name), ifp->specmib, &len, NULL, 0) == -1) { syslog(LOG_WARNING, "sysctl linkmib (%s): %m", ifp->name); if (ifp->specmib != NULL) { + free(ifp->specmib); ifp->specmib = NULL; ifp->specmiblen = 0; } @@ -546,9 +550,11 @@ mib_fetch_ifmib(struct mibif *ifp) alias_maxlen = MIBIF_ALIAS_SIZE_MAX; /* + * Free any alias memory allocated by a previous call. * Allocate maximum memory for a buffer and later reallocate * to free extra memory. */ + free(ifp->alias); if ((ifp->alias = malloc(alias_maxlen)) == NULL) { syslog(LOG_WARNING, "malloc(%d) failed: %m", (int)alias_maxlen); goto fin;