From: Yu Watanabe Date: Sun, 25 Aug 2024 21:33:42 +0000 (+0900) Subject: sd-device: refuse earlier when too long ifname is passed to sd_device_new_from_ifname() X-Git-Tag: v257-rc1~612^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=55e35a4d59bea8653a428f544490b1d80b848d64;p=thirdparty%2Fsystemd.git sd-device: refuse earlier when too long ifname is passed to sd_device_new_from_ifname() Otherwise, alloca() called in strjoina() may trigger assertion. This partially reverts 3652891c3904992e21739e9bfb004073841db63c. The commit mistakenly dropped the check. --- diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index dafda626f07..3d683fb2802 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -345,9 +345,11 @@ _public_ int sd_device_new_from_ifname(sd_device **ret, const char *ifname) { assert_return(ret, -EINVAL); assert_return(ifname, -EINVAL); - r = device_new_from_main_ifname(ret, ifname); - if (r >= 0) - return r; + if (ifname_valid(ifname)) { + r = device_new_from_main_ifname(ret, ifname); + if (r >= 0) + return r; + } r = rtnl_resolve_ifname_full(NULL, RESOLVE_IFNAME_ALTERNATIVE | RESOLVE_IFNAME_NUMERIC, ifname, &main_name, NULL); if (r < 0)