From 5388e103eaf2a31c0020ff8b8d9442426aee40ab Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 13 Jun 2021 05:24:35 +0900 Subject: [PATCH] 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. --- src/network/networkd-setlink.c | 10 ++++++++++ 1 file changed, 10 insertions(+) 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); } -- 2.47.3