mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 03:53:37 +02:00
cipso: harden use of skb_cow() in cipso_v4_skbuff_setattr()
If skb_cow() is passed a headroom <= -NET_SKB_PAD, it will trigger a
BUG. As a result, use cases should avoid calling with a headroom that
is negative to prevent triggering this issue.
This is the same code pattern fixed in Commit 58fc7342b5 ("ipv6:
BUG() in pskb_expand_head() as part of calipso_skbuff_setattr()").
In cipso_v4_skbuff_setattr(), len_delta can become negative, leading to
a negative headroom passed to skb_cow(). However, the BUG is not
triggerable because the condition headroom <= -NET_SKB_PAD cannot be
satisfied due to limits on the IPv4 options header size.
Avoid potential problems in the future by only using skb_cow() to grow
the skb headroom.
Signed-off-by: Will Rosenberg <whrosenb@asu.edu>
Acked-by: Paul Moore <paul@paul-moore.com>
Link: https://patch.msgid.link/20260120155738.982771-1-whrosenb@asu.edu
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
b6d5a62231
commit
40cb4cb77e
|
|
@ -2196,7 +2196,8 @@ int cipso_v4_skbuff_setattr(struct sk_buff *skb,
|
|||
/* if we don't ensure enough headroom we could panic on the skb_push()
|
||||
* call below so make sure we have enough, we are also "mangling" the
|
||||
* packet so we should probably do a copy-on-write call anyway */
|
||||
ret_val = skb_cow(skb, skb_headroom(skb) + len_delta);
|
||||
ret_val = skb_cow(skb,
|
||||
skb_headroom(skb) + (len_delta > 0 ? len_delta : 0));
|
||||
if (ret_val < 0)
|
||||
return ret_val;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user