mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
sd-device: refuse O_DIRECTORY returned from path_extract_filename()
In both cases, it is expected that the symlink targets do not end with '/'. Addresses https://github.com/systemd/systemd/pull/23089#discussion_r853007218.
This commit is contained in:
parent
bb60956b39
commit
e4e1353c25
@ -1181,6 +1181,8 @@ static int device_set_sysname_and_sysnum(sd_device *device) {
|
||||
r = path_extract_filename(device->devpath, &sysname);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r == O_DIRECTORY)
|
||||
return -EINVAL;
|
||||
|
||||
/* some devices have '!' in their name, change that to '/' */
|
||||
for (p = strchrnul(sysname, '!'); *p != '\0'; p = strchrnul(p, '!'))
|
||||
@ -1457,6 +1459,8 @@ int device_get_device_id(sd_device *device, const char **ret) {
|
||||
r = path_extract_filename(device->devpath, &sysname);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r == O_DIRECTORY)
|
||||
return -EINVAL;
|
||||
|
||||
if (streq(subsystem, "drivers")) {
|
||||
/* the 'drivers' pseudo-subsystem is special, and needs the real
|
||||
|
Loading…
x
Reference in New Issue
Block a user