From: Jeremy Kerr Date: Tue, 9 Dec 2025 13:22:55 +0000 (+0900) Subject: udev-builtin-net_id: fix construction of USB specifier-based names X-Git-Tag: v259-rc3~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b10b4303c6332e6432debb6664bc30ceddbe70f1;p=thirdparty%2Fsystemd.git udev-builtin-net_id: fix construction of USB specifier-based names Commit 0bac1ed242 ("tree-wide: Fix constness issues with newer glibc") split a temporary var in get_usb_specifier to const and non-const versions, but missed converting a couple of uses. This means we get names of with components of: port: uN config: cC.I interface: iC.I instead of: port: uN config: cC interface: iI This results in net names like enu1c1.0i1.0, as we also no longer hit the config==1 and interf==0 elision cases. Change the config portion handling to start from the correct position, and the earlier check for NULL. --- diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 339c73ed3a8..974955b2ec2 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -969,14 +969,14 @@ static int get_usb_specifier(sd_device *dev, char **ret) { ports = strdupa_safe(s + 1); char *t = strchr(ports, ':'); - if (!s) + if (!t) return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), "sysname \"%s\" does not have ':' in the expected place.", sysname); *t = '\0'; config = t + 1; - s = strchr(config, '.'); - if (!s) + t = strchr(config, '.'); + if (!t) return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), "sysname \"%s\" does not have '.' in the expected place.", sysname);