T Tony Cheneau #
When a UDP packet gets fragmented, a crash will occur during reassembly. skb->transport_header is not set during earlier period of fragment reassembly. As a consequence, calll to udp_hdr() return NULL and uh (which is NULL) gets dereferenced without much test. I will post a patch later that will set skb->transport_header correctly in lowpan_process_data(), so that lowpan_uncompress_udp_header() behave as intended. --- net/ieee802154/6lowpan.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c
index 32eb417..a52e795 100644
--- a/net/ieee802154/6lowpan.c
+++ b/net/ieee802154/6lowpan.c@@ -317,6 +317,9 @@ lowpan_uncompress_udp_header(struct sk_buff *skb) { struct udphdr *uh = udp_hdr(skb); u8 tmp; + + if (!uh) + goto err; tmp = lowpan_fetch_skb_u8(skb);
--
1.7.3.4