diff options
| author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2023-03-18 14:01:46 +0000 |
|---|---|---|
| committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2023-03-18 14:01:46 +0000 |
| commit | 9ee6278b78859e8a9e303ec4a037b4e76d6ed89a (patch) | |
| tree | cbd03b1c5a46868769235e571038b13f68280e9e | |
| parent | aee2f11bf4b44b286a88b6726347bd7466c5e750 (diff) | |
netstat: fix double-free in netlink error code path.
CID: 1504382
| -rw-r--r-- | usr.bin/netstat/route_netlink.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.bin/netstat/route_netlink.c b/usr.bin/netstat/route_netlink.c index 3546603ca1cc..6e7e505c9619 100644 --- a/usr.bin/netstat/route_netlink.c +++ b/usr.bin/netstat/route_netlink.c @@ -91,10 +91,8 @@ prepare_ifmap_netlink(struct snl_state *ss, size_t *pifmap_size) }; msg.hdr.nlmsg_len = sizeof(msg); - if (!snl_send_message(ss, &msg.hdr)) { - snl_free(ss); + if (!snl_send_message(ss, &msg.hdr)) return (NULL); - } struct ifmap_entry *ifmap = NULL; uint32_t ifmap_size = 0; @@ -286,6 +284,10 @@ p_rtable_netlink(int fibnum, int af) return (false); ifmap = prepare_ifmap_netlink(&ss, &ifmap_size); + if (ifmap == NULL) { + snl_free(&ss); + return (false); + } struct { struct nlmsghdr hdr; |
