From: Yu Watanabe Date: Mon, 9 Sep 2024 13:46:27 +0000 (+0900) Subject: network/netdev: check family of received NEWLINK message X-Git-Tag: v257-rc1~499^2~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d7de25052fa7d086c4763af81353f7e4eb8429d;p=thirdparty%2Fsystemd.git network/netdev: check family of received NEWLINK message For safety. No functional change, just refactoring and preparation for later commits. --- diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index 21b897a65f0..6a59a8f2dfb 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -351,7 +351,7 @@ int netdev_set_ifindex(NetDev *netdev, sd_netlink_message *message) { const char *kind; const char *received_kind; const char *received_name; - int r, ifindex; + int r, ifindex, family; assert(netdev); assert(message); @@ -363,6 +363,13 @@ int netdev_set_ifindex(NetDev *netdev, sd_netlink_message *message) { if (type != RTM_NEWLINK) return log_netdev_error_errno(netdev, SYNTHETIC_ERRNO(EINVAL), "Cannot set ifindex from unexpected rtnl message type."); + r = sd_rtnl_message_get_family(message, &family); + if (r < 0) + return log_netdev_warning_errno(netdev, r, "Failed to get family from received rtnl message: %m"); + + if (family != AF_UNSPEC) + return 0; /* IFLA_LINKINFO is only contained in the message with AF_UNSPEC. */ + r = sd_rtnl_message_link_get_ifindex(message, &ifindex); if (r < 0) { log_netdev_error_errno(netdev, r, "Could not get ifindex: %m");