Message ID | 53659f28be8bc336c113b5254dc637cc76bbae91.1606987074.git.dcaratti@redhat.com |
---|---|
State | Not Applicable |
Headers | show |
Series | [net] net: skbuff: ensure LSE is pullable before decrementing the MPLS ttl | expand |
Hello: This patch was applied to netdev/net.git (refs/heads/master): On Thu, 3 Dec 2020 10:58:21 +0100 you wrote: > skb_mpls_dec_ttl() reads the LSE without ensuring that it is contained in > the skb "linear" area. Fix this calling pskb_may_pull() before reading the > current ttl. > > Found by code inspection. > > Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") > Reported-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> > Signed-off-by: Davide Caratti <dcaratti@redhat.com> > > [...] Here is the summary with links: - [net] net: skbuff: ensure LSE is pullable before decrementing the MPLS ttl https://git.kernel.org/netdev/net/c/13de4ed9e3a9 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 06c526e0d810..e578544b2cc7 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -5786,6 +5786,9 @@ int skb_mpls_dec_ttl(struct sk_buff *skb) if (unlikely(!eth_p_mpls(skb->protocol))) return -EINVAL; + if (!pskb_may_pull(skb, skb_network_offset(skb) + MPLS_HLEN)) + return -ENOMEM; + lse = be32_to_cpu(mpls_hdr(skb)->label_stack_entry); ttl = (lse & MPLS_LS_TTL_MASK) >> MPLS_LS_TTL_SHIFT; if (!--ttl)
skb_mpls_dec_ttl() reads the LSE without ensuring that it is contained in the skb "linear" area. Fix this calling pskb_may_pull() before reading the current ttl. Found by code inspection. Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") Reported-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Signed-off-by: Davide Caratti <dcaratti@redhat.com> --- net/core/skbuff.c | 3 +++ 1 file changed, 3 insertions(+)