From 4d960d0bdb373b6bb71f77f8a3032795d60284c3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Apr 2022 10:18:17 +0200 Subject: [PATCH] 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. --- src/libsystemd/sd-device/sd-device.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 89c5b2cdd3..f9c491c242 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(); + + path_simplify(syspath); } - devpath = syspath + STRLEN("/sys"); - + 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.");