netfilter: bridge: don't leak skb in error paths
br_nf_dev_queue_xmit must free skb in its error path. NF_DROP is misleading -- its an okfn, not a netfilter hook. Fixes:462fb2af97
("bridge : Sanitize skb before it enters the IP stack") Fixes:efb6de9b4b
("netfilter: bridge: forward IPv6 fragmented packets") Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
Родитель
3bd229976f
Коммит
dd302b59bd
|
@ -744,7 +744,7 @@ static int br_nf_dev_queue_xmit(struct sock *sk, struct sk_buff *skb)
|
||||||
struct brnf_frag_data *data;
|
struct brnf_frag_data *data;
|
||||||
|
|
||||||
if (br_validate_ipv4(skb))
|
if (br_validate_ipv4(skb))
|
||||||
return NF_DROP;
|
goto drop;
|
||||||
|
|
||||||
IPCB(skb)->frag_max_size = nf_bridge->frag_max_size;
|
IPCB(skb)->frag_max_size = nf_bridge->frag_max_size;
|
||||||
|
|
||||||
|
@ -769,7 +769,7 @@ static int br_nf_dev_queue_xmit(struct sock *sk, struct sk_buff *skb)
|
||||||
struct brnf_frag_data *data;
|
struct brnf_frag_data *data;
|
||||||
|
|
||||||
if (br_validate_ipv6(skb))
|
if (br_validate_ipv6(skb))
|
||||||
return NF_DROP;
|
goto drop;
|
||||||
|
|
||||||
IP6CB(skb)->frag_max_size = nf_bridge->frag_max_size;
|
IP6CB(skb)->frag_max_size = nf_bridge->frag_max_size;
|
||||||
|
|
||||||
|
@ -784,12 +784,16 @@ static int br_nf_dev_queue_xmit(struct sock *sk, struct sk_buff *skb)
|
||||||
|
|
||||||
if (v6ops)
|
if (v6ops)
|
||||||
return v6ops->fragment(sk, skb, br_nf_push_frag_xmit);
|
return v6ops->fragment(sk, skb, br_nf_push_frag_xmit);
|
||||||
else
|
|
||||||
return -EMSGSIZE;
|
kfree_skb(skb);
|
||||||
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
nf_bridge_info_free(skb);
|
nf_bridge_info_free(skb);
|
||||||
return br_dev_queue_push_xmit(sk, skb);
|
return br_dev_queue_push_xmit(sk, skb);
|
||||||
|
drop:
|
||||||
|
kfree_skb(skb);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PF_BRIDGE/POST_ROUTING ********************************************/
|
/* PF_BRIDGE/POST_ROUTING ********************************************/
|
||||||
|
|
Загрузка…
Ссылка в новой задаче