From f1ad2c9238f03198a05e36167397d24983ebc527 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Feb 2022 13:33:43 +0100 Subject: [PATCH] sd-device: refuse opening device mit major/minor of zero early 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 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 27c91ea724..c9ce3b5c58 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -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}/: link */ xsprintf(id, "%u:%u", major(devnum), minor(devnum));