summaryrefslogtreecommitdiff
path: root/lib/netfilter
diff options
context:
space:
mode:
authorThomas Graf <tgr@deb.localdomain>2007-12-17 16:52:41 +0100
committerThomas Graf <tgr@deb.localdomain>2007-12-17 16:52:41 +0100
commit155ad439a49df034ec58ee4218834bc5b0120515 (patch)
treef57b8516e88f929f68f75ce08ae6bdc2220db4ca /lib/netfilter
parent91c330aae51cd6cd44ad730e10dc82724998c810 (diff)
downloadlibnl-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.c8
-rw-r--r--lib/netfilter/log.c8
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;
}
/**