From: Tom Gundersen Date: Thu, 21 Nov 2013 19:47:34 +0000 (+0100) Subject: networkd: avoid segfault X-Git-Tag: v209~1359 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=602cc437e8b4a3ab760b5a23fa4f3112134d9c36 networkd: avoid segfault --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index d41fe80f2..c03472216 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -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;