diff options
author | Thomas Graf <tgr@deb.localdomain> | 2007-12-17 16:52:41 +0100 |
---|---|---|
committer | Thomas Graf <tgr@deb.localdomain> | 2007-12-17 16:52:41 +0100 |
commit | 155ad439a49df034ec58ee4218834bc5b0120515 (patch) | |
tree | f57b8516e88f929f68f75ce08ae6bdc2220db4ca /lib/netfilter | |
parent | 91c330aae51cd6cd44ad730e10dc82724998c810 (diff) | |
download | libnl-155ad439a49df034ec58ee4218834bc5b0120515.tar.gz |
Fix memory leak when parsing netlink messages into caches
The reference created by the parsers was never given back.
Diffstat (limited to 'lib/netfilter')
-rw-r--r-- | lib/netfilter/ct.c | 8 | ||||
-rw-r--r-- | lib/netfilter/log.c | 8 |
2 files changed, 10 insertions, 6 deletions
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; } /** |