mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
netfilter pull request 24-06-27
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEN9lkrMBJgcdVAPub1V2XiooUIOQFAmZ8paQACgkQ1V2XiooU IOTF+Q//Wx505P6J3v2iNfh7kDzHFtOZNZsBz0hlO4XVP7hoobsRiGJsmy+q1s10 pgoBw2nlY7kMAzCTZAInad9+gU3Iv67xMTB6j+qCB0Pnj77HFcRA8U2d6TYg+iDQ QXxeL7gzpBdH81G0PslHH6KeOwpxF5QQkIYH7OlLBGVNJCXH/SiR/gLkwjPojZFL hPMPgNmP78LZp0qLRzWgfjrwtE6oy9kyZB90dJi62SfC0sOGy4aHpFKn4zyzH9UI jB0uBaRXJuecBcS6EnA1lhkUTcIEUWcECa0CQf3OlL0+VFBjNk74R0aQhICPEZKe nFIVEE07N/95jJLSiJOmXZrhw93l2Wtc7efspJwB8bf3EP9eo9PCIjR7us6GIqRm hth0jYzjgGZgLsa74gt8i8js4F9ppgZlWGCs7QkGkGJ+KetCRLEty0DxPlIo0qb0 /l7F9Opu5lYdDYs7uEvBeHZT0vaRwDW6DnpGwIJyh1LO6WA0qnCIOWeBWZCDwRjW Wuck3vR27dEltwqXnfKETtlO22+Lzwv4HUnJ3HXOZdetv691jCezhswyO8CMZ8py i65LL4Ex4duMOSJh0UC3SXIrpnAkOFEG+hnYIu+pEZQgFsqHu+WQrMI+jUigLTnK SDtazKzH6tDkguiQaT35zorF+ZU3rfr+Lbh8Y4NxJEf1SP/g/S4= =eoyB -----END PGP SIGNATURE----- Merge tag 'nf-24-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf Pablo Neira Ayuso says: ==================== Netfilter fixes for net The following patchset contains two Netfilter fixes for net: Patch #1 fixes CONFIG_SYSCTL=n for a patch coming in the previous PR to move the sysctl toggle to enable SRv6 netfilter hooks from nf_conntrack to the core, from Jianguo Wu. Patch #2 fixes a possible pointer leak to userspace due to insufficient validation of NFT_DATA_VALUE. Linus found this pointer leak to userspace via zdi-disclosures@ and forwarded the notice to Netfilter maintainers, he appears as reporter because whoever found this issue never approached Netfilter maintainers neither via security@ nor in private. netfilter pull request 24-06-27 * tag 'nf-24-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf: netfilter: nf_tables: fully validate NFT_DATA_VALUE on store to data registers netfilter: fix undefined reference to 'netfilter_lwtunnel_*' when CONFIG_SYSCTL=n ==================== Link: https://patch.msgid.link/20240626233845.151197-1-pablo@netfilter.org Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
commit
b62cb6a7e8
@ -619,6 +619,11 @@ static inline void *nft_set_priv(const struct nft_set *set)
|
||||
return (void *)set->data;
|
||||
}
|
||||
|
||||
static inline enum nft_data_types nft_set_datatype(const struct nft_set *set)
|
||||
{
|
||||
return set->dtype == NFT_DATA_VERDICT ? NFT_DATA_VERDICT : NFT_DATA_VALUE;
|
||||
}
|
||||
|
||||
static inline bool nft_set_gc_is_pending(const struct nft_set *s)
|
||||
{
|
||||
return refcount_read(&s->refs) != 1;
|
||||
|
@ -117,4 +117,7 @@ void netfilter_lwtunnel_fini(void)
|
||||
{
|
||||
unregister_pernet_subsys(&nf_lwtunnel_net_ops);
|
||||
}
|
||||
#else
|
||||
int __init netfilter_lwtunnel_init(void) { return 0; }
|
||||
void netfilter_lwtunnel_fini(void) {}
|
||||
#endif /* CONFIG_SYSCTL */
|
||||
|
@ -5740,8 +5740,7 @@ static int nf_tables_fill_setelem(struct sk_buff *skb,
|
||||
|
||||
if (nft_set_ext_exists(ext, NFT_SET_EXT_DATA) &&
|
||||
nft_data_dump(skb, NFTA_SET_ELEM_DATA, nft_set_ext_data(ext),
|
||||
set->dtype == NFT_DATA_VERDICT ? NFT_DATA_VERDICT : NFT_DATA_VALUE,
|
||||
set->dlen) < 0)
|
||||
nft_set_datatype(set), set->dlen) < 0)
|
||||
goto nla_put_failure;
|
||||
|
||||
if (nft_set_ext_exists(ext, NFT_SET_EXT_EXPRESSIONS) &&
|
||||
@ -11073,6 +11072,9 @@ static int nft_validate_register_store(const struct nft_ctx *ctx,
|
||||
|
||||
return 0;
|
||||
default:
|
||||
if (type != NFT_DATA_VALUE)
|
||||
return -EINVAL;
|
||||
|
||||
if (reg < NFT_REG_1 * NFT_REG_SIZE / NFT_REG32_SIZE)
|
||||
return -EINVAL;
|
||||
if (len == 0)
|
||||
@ -11081,8 +11083,6 @@ static int nft_validate_register_store(const struct nft_ctx *ctx,
|
||||
sizeof_field(struct nft_regs, data))
|
||||
return -ERANGE;
|
||||
|
||||
if (data != NULL && type != NFT_DATA_VALUE)
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -132,7 +132,8 @@ static int nft_lookup_init(const struct nft_ctx *ctx,
|
||||
return -EINVAL;
|
||||
|
||||
err = nft_parse_register_store(ctx, tb[NFTA_LOOKUP_DREG],
|
||||
&priv->dreg, NULL, set->dtype,
|
||||
&priv->dreg, NULL,
|
||||
nft_set_datatype(set),
|
||||
set->dlen);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
Loading…
Reference in New Issue
Block a user