]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: memleak in expressions
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 9 Apr 2019 20:58:27 +0000 (22:58 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 9 Apr 2019 23:11:41 +0000 (01:11 +0200)
Fix memleak in set element and hash expressions destroy path.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/expression.c
src/hash.c

index 0edc1d22ffce965d079b9d774e29da1a03b681fe..eece12e4fd2da03f1aa0e5480defa78e7db626e2 100644 (file)
@@ -1097,6 +1097,7 @@ static void set_elem_expr_destroy(struct expr *expr)
 {
        xfree(expr->comment);
        expr_free(expr->key);
+       stmt_free(expr->stmt);
 }
 
 static void set_elem_expr_clone(struct expr *new, const struct expr *expr)
index 208f4b6b6779760be398975d7fa510c9b1e540c4..08e09099024ec9b75e427dfcd8762b83edc8d3c7 100644 (file)
@@ -56,6 +56,11 @@ static void hash_expr_clone(struct expr *new, const struct expr *expr)
        new->hash.type = expr->hash.type;
 }
 
+static void hash_expr_destroy(struct expr *expr)
+{
+       expr_free(expr->hash.expr);
+}
+
 const struct expr_ops hash_expr_ops = {
        .type           = EXPR_HASH,
        .name           = "hash",
@@ -63,6 +68,7 @@ const struct expr_ops hash_expr_ops = {
        .json           = hash_expr_json,
        .cmp            = hash_expr_cmp,
        .clone          = hash_expr_clone,
+       .destroy        = hash_expr_destroy,
 };
 
 struct expr *hash_expr_alloc(const struct location *loc,