aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuck Silvers <chs@FreeBSD.org>2026-05-09 15:52:14 +0000
committerHartmut Brandt <harti@FreeBSD.org>2026-05-09 15:52:14 +0000
commit7906084ba2fd50022f38ce2e8d0bcef212a4ff19 (patch)
tree5d197392b26d745940c0dc7efdc9fb4a4335da40
parent6499888ca741bf3db90d7fd352d5480f7314337f (diff)
-rw-r--r--contrib/bsnmp/snmp_mibII/mibII.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/contrib/bsnmp/snmp_mibII/mibII.c b/contrib/bsnmp/snmp_mibII/mibII.c
index 59f3836d1ede..4cf4f231facc 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;