瀏覽代碼

netfilter: nf_tables: allow to change chain policy without hook if it exists

If there's an existing base chain, we have to allow to change the
default policy without indicating the hook information.

However, if the chain doesn't exists, we have to enforce the presence of
the hook attribute.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Pablo Neira Ayuso 10 年之前
父節點
當前提交
d6b6cb1d3e
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      net/netfilter/nf_tables_api.c

+ 4 - 1
net/netfilter/nf_tables_api.c

@@ -1225,7 +1225,10 @@ static int nf_tables_newchain(struct sock *nlsk, struct sk_buff *skb,
 
 
 	if (nla[NFTA_CHAIN_POLICY]) {
 	if (nla[NFTA_CHAIN_POLICY]) {
 		if ((chain != NULL &&
 		if ((chain != NULL &&
-		    !(chain->flags & NFT_BASE_CHAIN)) ||
+		    !(chain->flags & NFT_BASE_CHAIN)))
+			return -EOPNOTSUPP;
+
+		if (chain == NULL &&
 		    nla[NFTA_CHAIN_HOOK] == NULL)
 		    nla[NFTA_CHAIN_HOOK] == NULL)
 			return -EOPNOTSUPP;
 			return -EOPNOTSUPP;