]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: refuse block device without subsystem
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 18 Sep 2022 00:03:05 +0000 (09:03 +0900)
committerLennart Poettering <lennart@poettering.net>
Sun, 18 Sep 2022 13:35:56 +0000 (15:35 +0200)
Previously, even if sd_device_get_subsystem() returns -ENOENT for block
device, we accepted that. This makes the check slightly stricter.

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

index 91af4a27ed8d4536c9fbe355e2797518880ae5d3..13328ffd8361db3a5f60ec3e453e415b09d22a68 100644 (file)
@@ -281,7 +281,7 @@ _public_ int sd_device_new_from_syspath(sd_device **ret, const char *syspath) {
 int device_new_from_mode_and_devnum(sd_device **ret, mode_t mode, dev_t devnum) {
         _cleanup_(sd_device_unrefp) sd_device *dev = NULL;
         _cleanup_free_ char *syspath = NULL;
-        const char *t, *subsystem;
+        const char *t, *subsystem = NULL;
         dev_t n;
         int r;
 
@@ -315,7 +315,7 @@ int device_new_from_mode_and_devnum(sd_device **ret, mode_t mode, dev_t devnum)
         r = sd_device_get_subsystem(dev, &subsystem);
         if (r < 0 && r != -ENOENT)
                 return r;
-        if (r >= 0 && streq(subsystem, "block") != !!S_ISBLK(mode))
+        if (streq_ptr(subsystem, "block") != !!S_ISBLK(mode))
                 return -ENXIO;
 
         *ret = TAKE_PTR(dev);