From: Yu Watanabe Date: Sat, 12 Jun 2021 20:24:35 +0000 (+0900) Subject: network: check the size of hardware address before setting MAC address X-Git-Tag: v249-rc1~24^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5388e103eaf2a31c0020ff8b8d9442426aee40ab;p=thirdparty%2Fsystemd.git network: check the size of hardware address before setting MAC address Also, skip to set MAC address when the current address equals to the requrested one. --- diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c index 478591b5bb5..ec9eac47520 100644 --- a/src/network/networkd-setlink.c +++ b/src/network/networkd-setlink.c @@ -680,6 +680,16 @@ int link_request_to_set_mac(Link *link) { if (!link->network->mac) return 0; + if (link->hw_addr.length != sizeof(struct ether_addr)) { + /* Note that for now we only support changing hardware addresses on Ethernet. */ + log_link_debug(link, "Size of the hardware address (%zu) does not match the size of MAC address (%zu), ignoring.", + link->hw_addr.length, sizeof(struct ether_addr)); + return 0; + } + + if (ether_addr_equal(&link->hw_addr.ether, link->network->mac)) + return 0; + return link_request_set_link(link, SET_LINK_MAC, link_set_mac_handler, NULL); }