Blame SOURCES/0011-expr-dynset-release-stateful-expression-from-.free-p.patch

54a5e4
From 719810aeae4bf7a5c99bb6090070e769954d2e01 Mon Sep 17 00:00:00 2001
54a5e4
From: Phil Sutter <psutter@redhat.com>
54a5e4
Date: Thu, 13 Jan 2022 20:10:27 +0100
54a5e4
Subject: [PATCH] expr: dynset: release stateful expression from .free path
54a5e4
54a5e4
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2040478
54a5e4
Upstream Status: libnftnl commit 0bd7d62c450c6
54a5e4
54a5e4
commit 0bd7d62c450c6736af4141d37073c5b40f1f894d
54a5e4
Author: Pablo Neira Ayuso <pablo@netfilter.org>
54a5e4
Date:   Wed May 6 20:45:35 2020 +0200
54a5e4
54a5e4
    expr: dynset: release stateful expression from .free path
54a5e4
54a5e4
    ==22778==ERROR: LeakSanitizer: detected memory leaks
54a5e4
54a5e4
    Direct leak of 64 byte(s) in 1 object(s) allocated from:
54a5e4
        #0 0x7f3212406518 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe9518)
54a5e4
        #1 0x7f321041703e in nftnl_expr_alloc /home/pablo/devel/scm/git-netfilter/libnftnl/src/expr.c:37
54a5e4
        #2 0x7f3211d51c16 in netlink_gen_limit_stmt /home/pablo/devel/scm/git-netfilter/nftables/src/netlink_linearize.c:859
54a5e4
        #3 0x7f3211d5220c in netlink_gen_stmt_stateful /home/pablo/devel/scm/git-netfilter/nftables/src/netlink_linearize.c:891
54a5e4
        #4 0x7f3211d58630 in netlink_gen_meter_stmt /home/pablo/devel/scm/git-netfilter/nftables/src/netlink_linearize.c:1441
54a5e4
    [...]
54a5e4
54a5e4
    SUMMARY: AddressSanitizer: 64 byte(s) leaked in 1 allocation(s).
54a5e4
54a5e4
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
54a5e4
---
54a5e4
 src/expr/dynset.c | 2 ++
54a5e4
 1 file changed, 2 insertions(+)
54a5e4
54a5e4
diff --git a/src/expr/dynset.c b/src/expr/dynset.c
54a5e4
index 4870923..466dfff 100644
54a5e4
--- a/src/expr/dynset.c
54a5e4
+++ b/src/expr/dynset.c
54a5e4
@@ -278,6 +278,8 @@ static void nftnl_expr_dynset_free(const struct nftnl_expr *e)
54a5e4
 	struct nftnl_expr_dynset *dynset = nftnl_expr_data(e);
54a5e4
 
54a5e4
 	xfree(dynset->set_name);
54a5e4
+	if (dynset->expr)
54a5e4
+		nftnl_expr_free(dynset->expr);
54a5e4
 }
54a5e4
 
54a5e4
 struct expr_ops expr_ops_dynset = {
54a5e4
-- 
54a5e4
2.31.1
54a5e4