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.
This commit is contained in:
Jeremy Kerr
2025-12-10 00:24:01 +09:00
committed by Yu Watanabe
parent af80c9c224
commit b10b4303c6
+3 -3
View File
@@ -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);