summaryrefslogtreecommitdiff
path: root/net/ieee802154/6lowpan_iphc.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ieee802154/6lowpan_iphc.c')
-rw-r--r--net/ieee802154/6lowpan_iphc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/net/ieee802154/6lowpan_iphc.c b/net/ieee802154/6lowpan_iphc.c
index 02bf74d80e72..a70fa66b5357 100644
--- a/net/ieee802154/6lowpan_iphc.c
+++ b/net/ieee802154/6lowpan_iphc.c
@@ -309,9 +309,14 @@ uncompress_udp_header(struct sk_buff *skb, struct udphdr *uh)
pr_debug("uncompressed UDP ports: src = %d, dst = %d\n",
ntohs(uh->source), ntohs(uh->dest));
- /* copy checksum */
- memcpy(&uh->check, &skb->data[0], 2);
- skb_pull(skb, 2);
+ /* checksum */
+ if (tmp & LOWPAN_NHC_UDP_CS_C) {
+ pr_debug_ratelimited("checksum elided currently not supported\n");
+ goto err;
+ } else {
+ memcpy(&uh->check, &skb->data[0], 2);
+ skb_pull(skb, 2);
+ }
/*
* UDP lenght needs to be infered from the lower layers