]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
cache: initialize filter when fetching implicit chains
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 17 Sep 2024 17:18:09 +0000 (19:18 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 17 Sep 2024 19:42:30 +0000 (21:42 +0200)
ASAN reports:

  src/cache.c:734:25: runtime error: load of value 189, which is not a valid value for type '_Bool'

because filter->reset.rule remains uninitialized.

Initialize filter and replace existing construct to initialize table and
chain which leaves remaining fields uninitialized.

Fixes: dbff26bfba83 ("cache: consolidate reset command")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/cache.c

index c8ef16033551b92908f1abe68ba6cf00b6cee0bf..b75a5bf3283cf7bdb7db13fcf50566b49724a74c 100644 (file)
@@ -1118,15 +1118,14 @@ err_ctx_list:
 static int implicit_chain_cache(struct netlink_ctx *ctx, struct table *table,
                                const char *chain_name)
 {
-       struct nft_cache_filter filter;
+       struct nft_cache_filter filter = {};
        struct chain *chain;
        int ret = 0;
 
        list_for_each_entry(chain, &table->chain_bindings, cache.list) {
-               filter.list = (typeof(filter.list)) {
-                       .table = table->handle.table.name,
-                       .chain = chain->handle.chain.name,
-               };
+               filter.list.table = table->handle.table.name;
+               filter.list.chain = chain->handle.chain.name;
+
                ret = rule_init_cache(ctx, table, &filter);
        }