]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: refuse opening device mit major/minor of zero early
authorLennart Poettering <lennart@poettering.net>
Mon, 14 Feb 2022 12:33:43 +0000 (13:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 14 Feb 2022 12:40:56 +0000 (13:40 +0100)
device nodes with 0 dev_t are not real (and for that reason such inodes
are used as whiteouts in overlayfs, for example), hence refuse them
early. It seems wrong going to sysfs for something we know can't exist
anyway.

src/libsystemd/sd-device/sd-device.c

index 27c91ea724f93a453997dd96d12f6bcca2c8aa85..c9ce3b5c583a191165c8c9d44734212baf8b8823 100644 (file)
@@ -248,6 +248,10 @@ _public_ int sd_device_new_from_devnum(sd_device **ret, char type, dev_t devnum)
         assert_return(ret, -EINVAL);
         assert_return(IN_SET(type, 'b', 'c'), -EINVAL);
 
+        if (devnum == 0)
+                return log_debug_errno(SYNTHETIC_ERRNO(ENODEV),
+                                       "sd-device: Attempted to allocate device by zero major/minor, refusing.");
+
         /* use /sys/dev/{block,char}/<maj>:<min> link */
         xsprintf(id, "%u:%u", major(devnum), minor(devnum));