summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2016-04-15 12:29:42 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2016-04-15 12:51:51 +0200
commit79f475c99b83775fdb9ec331eef85c94e80a3449 (patch)
tree2c5cb418575be5104338ffbdb7db16f04a50234f
parent3aca3f8206dad8b3f585e11c973ed2c02ed8c1c4 (diff)
rule: fix leaks in NFTNL_RULE_USERDATA
Fix leaks in nftnl_rule_free() and nftnl_rule_set_data(). Reported-by: Carlos Falgueras GarcĂ­a <carlosfg@riseup.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--src/rule.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/rule.c b/src/rule.c
index 3a32bf6..9c09127 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -75,6 +75,8 @@ void nftnl_rule_free(struct nftnl_rule *r)
xfree(r->table);
if (r->chain != NULL)
xfree(r->chain);
+ if (r->user.data != NULL)
+ xfree(r->user.data);
xfree(r);
}
@@ -162,6 +164,9 @@ void nftnl_rule_set_data(struct nftnl_rule *r, uint16_t attr,
r->position = *((uint64_t *)data);
break;
case NFTNL_RULE_USERDATA:
+ if (r->user.data != NULL)
+ xfree(r->user.data);
+
r->user.data = (void *)data;
r->user.len = data_len;
break;