ipsec: be careful of non existing mac headers
Niccolo Belli reported ipsec crashes in case we handle a frame without mac header (atm in his case) Before copying mac header, better make sure it is present. Bugzilla reference: https://bugzilla.kernel.org/show_bug.cgi?id=42809 Reported-by: Niccolò Belli <darkbasic@linuxsystems.it> Tested-by: Niccolò Belli <darkbasic@linuxsystems.it> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
4a2258dddd
commit
03606895cd
@@ -1465,6 +1465,16 @@ static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
|
||||
}
|
||||
#endif /* NET_SKBUFF_DATA_USES_OFFSET */
|
||||
|
||||
static inline void skb_mac_header_rebuild(struct sk_buff *skb)
|
||||
{
|
||||
if (skb_mac_header_was_set(skb)) {
|
||||
const unsigned char *old_mac = skb_mac_header(skb);
|
||||
|
||||
skb_set_mac_header(skb, -skb->mac_len);
|
||||
memmove(skb_mac_header(skb), old_mac, skb->mac_len);
|
||||
}
|
||||
}
|
||||
|
||||
static inline int skb_checksum_start_offset(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->csum_start - skb_headroom(skb);
|
||||
|
Reference in New Issue
Block a user