Fix some memory leaks when fetching the mibII.

Reviewed by:	glebius
Sponsored by:	Netflix
Differential Revision:	<https://reviews.freebsd.org/D55998>
This commit is contained in:
Chuck Silvers
2026-05-09 17:52:14 +02:00
committed by Hartmut Brandt
parent 6499888ca7
commit 7906084ba2
+6
View File
@@ -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;