aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2025-12-04 15:00:46 +0000
committerMark Johnston <markj@FreeBSD.org>2025-12-08 14:08:13 +0000
commit792221630bf4e58fcd923547bab689f4497613d8 (patch)
treedf735c9ed34b7395f5d49a241d59124024a8ab08
parent0795e9b53cf5be68955b49dce87f4800fdfd4a89 (diff)
rtsold: Fix a buffer leak if we fail to read the default router sysctl
MFC after: 1 week Reported by: Kevin Day <kevin@your.org>
-rw-r--r--usr.sbin/rtsold/cap_sendmsg.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usr.sbin/rtsold/cap_sendmsg.c b/usr.sbin/rtsold/cap_sendmsg.c
index 6e7f156fbe62..36c68b7ba78d 100644
--- a/usr.sbin/rtsold/cap_sendmsg.c
+++ b/usr.sbin/rtsold/cap_sendmsg.c
@@ -151,8 +151,10 @@ probe_defrouters(uint32_t ifindex, uint32_t linkid)
buf = malloc(len);
if (buf == NULL)
return (-1);
- if (sysctl(mib, nitems(mib), buf, &len, NULL, 0) < 0)
+ if (sysctl(mib, nitems(mib), buf, &len, NULL, 0) < 0) {
+ free(buf);
return (-1);
+ }
ep = (struct in6_defrouter *)(void *)(buf + len);
for (p = (struct in6_defrouter *)(void *)buf; p < ep; p++) {
if (ifindex != p->if_index)