chiark / gitweb /
networkd: avoid segfault
authorTom Gundersen <teg@jklm.no>
Thu, 21 Nov 2013 19:47:34 +0000 (20:47 +0100)
committerTom Gundersen <teg@jklm.no>
Thu, 21 Nov 2013 19:48:06 +0000 (20:48 +0100)
src/network/networkd-link.c

index d41fe80..c034722 100644 (file)
@@ -29,6 +29,7 @@
 int link_new(Manager *manager, struct udev_device *device, Link **ret) {
         _cleanup_link_free_ Link *link = NULL;
         const char *mac;
+        struct ether_addr *mac_addr;
         int r;
 
         assert(device);
@@ -46,7 +47,12 @@ int link_new(Manager *manager, struct udev_device *device, Link **ret) {
         if (!mac)
                 return -EINVAL;
 
-        memcpy(&link->mac.ether_addr_octet[0], ether_aton(mac), ETH_ALEN);
+        mac_addr = ether_aton(mac);
+        if (!mac_addr)
+                return -EINVAL;
+
+        memcpy(&link->mac, mac_addr, sizeof(struct ether_addr));
+
         link->manager = manager;
         link->state = _LINK_STATE_INVALID;