From: Lennart Poettering Date: Mon, 14 Feb 2022 12:33:43 +0000 (+0100) Subject: sd-device: refuse opening device mit major/minor of zero early X-Git-Tag: v251-rc1~297^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1ad2c9238f03198a05e36167397d24983ebc527;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 27c91ea724f..c9ce3b5c583 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));