Skip to content

Commit 9608fa6

Browse files
dcarattikuba-moo
authored andcommitted
net/sched: act_mpls: ensure LSE is pullable before reading it
when 'act_mpls' is used to mangle the LSE, the current value is read from the packet dereferencing 4 bytes at mpls_hdr(): ensure that the label is contained in the skb "linear" area. Found by code inspection. v2: - use MPLS_HLEN instead of sizeof(new_lse), thanks to Jakub Kicinski Fixes: 2a2ea50 ("net: sched: add mpls manipulation actions to TC") Signed-off-by: Davide Caratti <dcaratti@redhat.com> Acked-by: Guillaume Nault <gnault@redhat.com> Link: https://lore.kernel.org/r/3243506cba43d14858f3bd21ee0994160e44d64a.1606987058.git.dcaratti@redhat.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 43c1360 commit 9608fa6

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

net/sched/act_mpls.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ static int tcf_mpls_act(struct sk_buff *skb, const struct tc_action *a,
105105
goto drop;
106106
break;
107107
case TCA_MPLS_ACT_MODIFY:
108+
if (!pskb_may_pull(skb,
109+
skb_network_offset(skb) + MPLS_HLEN))
110+
goto drop;
108111
new_lse = tcf_mpls_get_lse(mpls_hdr(skb), p, false);
109112
if (skb_mpls_update_lse(skb, new_lse))
110113
goto drop;

0 commit comments

Comments
 (0)