Fix two memory leaks in netlink event monitor. Also fix a leak related to all sets, the ->init expression is not freed. Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx> --- src/netlink.c | 5 ++++- src/rule.c | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/netlink.c b/src/netlink.c index feaea19..5347372 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -1724,8 +1724,10 @@ static int netlink_events_set_cb(const struct nlmsghdr *nlh, int type, case NFT_MSG_NEWSET: printf("add "); set = netlink_delinearize_set(monh->ctx, nls); - if (set == NULL) + if (set == NULL) { + nft_set_free(nls); return MNL_CB_ERROR; + } set_print_plain(set); set_free(set); printf("\n"); @@ -1940,6 +1942,7 @@ static void netlink_events_cache_addset(struct netlink_mon_handler *monh, t = table_lookup(&s->handle); if (t == NULL) { fprintf(stderr, "W: Unable to cache set: table not found.\n"); + set_free(s); goto out; } diff --git a/src/rule.c b/src/rule.c index 9576664..dd39e8a 100644 --- a/src/rule.c +++ b/src/rule.c @@ -74,6 +74,8 @@ void set_free(struct set *set) { if (--set->refcnt > 0) return; + if (set->init != NULL) + expr_free(set->init); handle_free(&set->handle); xfree(set); } -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html