From b3acefd34069b2ced7b2cc6c53033d084506304b Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Fri, 19 Jun 2015 14:52:51 +0200 Subject: [PATCH 1/3] ng_sixlowpan: write protect pkt --- sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c index 5e244c8126..0b284610bd 100644 --- a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c +++ b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c @@ -59,6 +59,21 @@ void _receive(ng_pktsnip_t *pkt) uint8_t *dispatch; ng_netreg_entry_t *entry; + /* seize payload as a temporary variable */ + payload = ng_pktbuf_start_write(pkt); /* need to duplicate since pkt->next + * might get replaced */ + + if (payload == NULL) { + DEBUG("6lo: can not get write access on received packet\n"); +#if defined(DEVELHELP) && defined(ENABLE_DEBUG) + ng_pktbuf_stats(); +#endif + ng_pktbuf_release(pkt); + return; + } + + pkt = payload; /* reset pkt from temporary variable */ + LL_SEARCH_SCALAR(pkt, payload, type, NG_NETTYPE_SIXLOWPAN); if ((payload == NULL) || (payload->size < 1)) { From 74430228cb21493dd55ccad025ddf3c9c02c2e28 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Fri, 19 Jun 2015 17:13:10 +0200 Subject: [PATCH 2/3] ng_sixlowpan: add missing return --- sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c index 0b284610bd..8768b97cb8 100644 --- a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c +++ b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c @@ -79,6 +79,7 @@ void _receive(ng_pktsnip_t *pkt) if ((payload == NULL) || (payload->size < 1)) { DEBUG("6lo: Received packet has no 6LoWPAN payload\n"); ng_pktbuf_release(pkt); + return; } dispatch = payload->data; From 245c51f821b3e7c346c2157f5c649eab2a9a7f7e Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Fri, 19 Jun 2015 17:14:42 +0200 Subject: [PATCH 3/3] ng_sixlowpan: piggy-back cppcheck suppression --- sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c index 8768b97cb8..4504180747 100644 --- a/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c +++ b/sys/net/network_layer/ng_sixlowpan/ng_sixlowpan.c @@ -165,6 +165,8 @@ void _send(ng_pktsnip_t *pkt) /* cppcheck-suppress unreadVariable */ size_t payload_len, datagram_size; uint16_t max_frag_size; + /* cppcheck: disp is needed in other build paths on this level already */ + /* cppcheck-suppress variableScope */ uint8_t *disp; if ((pkt == NULL) || (pkt->size < sizeof(ng_netif_hdr_t))) {