From: Lennart Poettering Date: Tue, 5 Apr 2022 08:18:17 +0000 (+0200) Subject: sd-device: make device_set_syspath() more defensive X-Git-Tag: v251-rc2~138^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d960d0bdb373b6bb71f77f8a3032795d60284c3;p=thirdparty%2Fsystemd.git sd-device: make device_set_syspath() more defensive Simplify generated sysfs paths, since we might get data passed that includes extra // in the middle. Also, let's not assume /sys/ prefix without verification. --- diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 89c5b2cdd36..f9c491c242b 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -207,10 +207,11 @@ int device_set_syspath(sd_device *device, const char *_syspath, bool verify) { syspath = strdup(_syspath); if (!syspath) return log_oom_debug(); - } - devpath = syspath + STRLEN("/sys"); + path_simplify(syspath); + } + assert_se(devpath = startswith(syspath, "/sys")); if (devpath[0] != '/') return log_debug_errno(SYNTHETIC_ERRNO(ENODEV), "sd-device: \"/sys\" alone is not a valid device path.");