From 3757e57e7163facd3451e500967acdca0d42f035 Mon Sep 17 00:00:00 2001
From: Oleg Hahm <oleg@hobbykeller.org>
Date: Tue, 18 Aug 2015 14:21:17 +0200
Subject: [PATCH] netdev_eth: drop multicast with empty payload

---
 sys/net/link_layer/ng_netdev_eth/ng_netdev_eth.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/sys/net/link_layer/ng_netdev_eth/ng_netdev_eth.c b/sys/net/link_layer/ng_netdev_eth/ng_netdev_eth.c
index d0f7b965fe..f52f8a35e3 100644
--- a/sys/net/link_layer/ng_netdev_eth/ng_netdev_eth.c
+++ b/sys/net/link_layer/ng_netdev_eth/ng_netdev_eth.c
@@ -362,7 +362,7 @@ static inline void _addr_set_multicast(uint8_t *dst, ng_pktsnip_t *payload)
         case NG_NETTYPE_IPV6:
             dst[0] = 0x33;
             dst[1] = 0x33;
-            if ((payload != NULL) && (payload->data != NULL)) {
+            if (payload->data != NULL) {
                 ipv6_hdr_t *hdr = payload->data;
                 uint16_t *prefix = (uint16_t *)(&dst[2]);
                 prefix[0] = hdr->dst.u16[6].u16;
@@ -418,6 +418,12 @@ static int _marshall_ethernet(ng_netdev_eth_t *dev, uint8_t *buffer, ng_pktsnip_
         _addr_set_broadcast(hdr->dst);
     }
     else if (netif_hdr->flags & NG_NETIF_HDR_FLAGS_MULTICAST) {
+        if (payload == NULL) {
+            DEBUG("ng_netdev_eth: empty multicast packets over Ethernet are "\
+                  "not yet supported\n");
+            return -ENOTSUP;
+
+        }
         _addr_set_multicast(hdr->dst, payload);
     }
     else if (netif_hdr->dst_l2addr_len == ETHERNET_ADDR_LEN) {
-- 
GitLab