From 155ad439a49df034ec58ee4218834bc5b0120515 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Mon, 17 Dec 2007 16:52:41 +0100 Subject: Fix memory leak when parsing netlink messages into caches The reference created by the parsers was never given back. --- lib/netfilter/ct.c | 8 +++++--- lib/netfilter/log.c | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'lib/netfilter') diff --git a/lib/netfilter/ct.c b/lib/netfilter/ct.c index 195c98f..e9df924 100644 --- a/lib/netfilter/ct.c +++ b/lib/netfilter/ct.c @@ -366,13 +366,15 @@ static int ct_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, if (err < 0) goto errout; - return P_ACCEPT; + err = P_ACCEPT; -errout_errno: - err = nl_get_errno(); errout: nfnl_ct_put(ct); return err; + +errout_errno: + err = nl_get_errno(); + goto errout; } int nfnl_ct_dump_request(struct nl_handle *h) diff --git a/lib/netfilter/log.c b/lib/netfilter/log.c index d8b3521..a6bf3d5 100644 --- a/lib/netfilter/log.c +++ b/lib/netfilter/log.c @@ -174,13 +174,15 @@ static int log_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, if (err < 0) goto errout; - return P_ACCEPT; + err = P_ACCEPT; -errout_errno: - err = nl_get_errno(); errout: nfnl_log_put(log); return err; + +errout_errno: + err = nl_get_errno(); + goto errout; } /** -- cgit v1.2.1