Skip to content

Commit 9999378

Browse files
Florian Westphalummakynes
authored andcommitted
netfilter: nft_ct: fix l3num expectations with inet pseudo family
Following is rejected but should be allowed: table inet t { ct expectation exp1 { [..] l3proto ip Valid combos are: table ip t, l3proto ip table ip6 t, l3proto ip6 table inet t, l3proto ip OR l3proto ip6 Disallow inet pseudeo family, the l3num must be a on-wire protocol known to conntrack. Retain NFPROTO_INET case to make it clear its rejected intentionally rather as oversight. Fixes: 8059918 ("netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom expectations") Signed-off-by: Florian Westphal <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent 5f4fc4b commit 9999378

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

net/netfilter/nft_ct.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,14 +1256,13 @@ static int nft_ct_expect_obj_init(const struct nft_ctx *ctx,
12561256
switch (priv->l3num) {
12571257
case NFPROTO_IPV4:
12581258
case NFPROTO_IPV6:
1259-
if (priv->l3num != ctx->family)
1260-
return -EINVAL;
1259+
if (priv->l3num == ctx->family || ctx->family == NFPROTO_INET)
1260+
break;
12611261

1262-
fallthrough;
1263-
case NFPROTO_INET:
1264-
break;
1262+
return -EINVAL;
1263+
case NFPROTO_INET: /* tuple.src.l3num supports NFPROTO_IPV4/6 only */
12651264
default:
1266-
return -EOPNOTSUPP;
1265+
return -EAFNOSUPPORT;
12671266
}
12681267

12691268
priv->l4proto = nla_get_u8(tb[NFTA_CT_EXPECT_L4PROTO]);

0 commit comments

Comments
 (0)