netfilter: nf_tables: skip netlink portID validation if zero
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 22 Jun 2021 09:45:11 +0000 (11:45 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 22 Jun 2021 10:08:04 +0000 (12:08 +0200)
nft_table_lookup() allows us to obtain the table object by the name and
the family. The netlink portID validation needs to be skipped for the
dump path, since the ownership only applies to commands to update the
given table. Skip validation if the specified netlink PortID is zero
when calling nft_table_lookup().

Fixes: 6001a930ce03 ("netfilter: nftables: introduce table ownership")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_tables_api.c

index ca9ec8721e6c40041104c69e3375d1f6838af1c3..1d62b1a83299e022d34be01d60e0f59b96189b41 100644 (file)
@@ -571,7 +571,7 @@ static struct nft_table *nft_table_lookup(const struct net *net,
                    table->family == family &&
                    nft_active_genmask(table, genmask)) {
                        if (nft_table_has_owner(table) &&
-                           table->nlpid != nlpid)
+                           nlpid && table->nlpid != nlpid)
                                return ERR_PTR(-EPERM);
 
                        return table;