mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-13 20:59:37 +02:00
netfilter: iptables: Fix potential null-ptr-deref in ip6table_nat_table_init().
[ Upstream commitc22921df77
] ip6table_nat_table_init() accesses net->gen->ptr[ip6table_nat_net_ops.id], but the function is exposed to user space before the entry is allocated via register_pernet_subsys(). Let's call register_pernet_subsys() before xt_register_template(). Fixes:fdacd57c79
("netfilter: x_tables: never register tables by default") Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Reviewed-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
70014b73d7
commit
e85b9b6a87
|
@ -147,23 +147,27 @@ static struct pernet_operations ip6table_nat_net_ops = {
|
||||||
|
|
||||||
static int __init ip6table_nat_init(void)
|
static int __init ip6table_nat_init(void)
|
||||||
{
|
{
|
||||||
int ret = xt_register_template(&nf_nat_ipv6_table,
|
int ret;
|
||||||
ip6table_nat_table_init);
|
|
||||||
|
|
||||||
|
/* net->gen->ptr[ip6table_nat_net_id] must be allocated
|
||||||
|
* before calling ip6t_nat_register_lookups().
|
||||||
|
*/
|
||||||
|
ret = register_pernet_subsys(&ip6table_nat_net_ops);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = register_pernet_subsys(&ip6table_nat_net_ops);
|
ret = xt_register_template(&nf_nat_ipv6_table,
|
||||||
|
ip6table_nat_table_init);
|
||||||
if (ret)
|
if (ret)
|
||||||
xt_unregister_template(&nf_nat_ipv6_table);
|
unregister_pernet_subsys(&ip6table_nat_net_ops);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit ip6table_nat_exit(void)
|
static void __exit ip6table_nat_exit(void)
|
||||||
{
|
{
|
||||||
unregister_pernet_subsys(&ip6table_nat_net_ops);
|
|
||||||
xt_unregister_template(&nf_nat_ipv6_table);
|
xt_unregister_template(&nf_nat_ipv6_table);
|
||||||
|
unregister_pernet_subsys(&ip6table_nat_net_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(ip6table_nat_init);
|
module_init(ip6table_nat_init);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user