]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: check UBI char device name
authorKarel Zak <kzak@redhat.com>
Thu, 25 Nov 2021 10:54:11 +0000 (11:54 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 25 Nov 2021 10:54:11 +0000 (11:54 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/probe.c

index 0207f79c15d5d02cd7cb45b30cb7f25e46b2b6cf..3685ea5e13aee5e908a9c8f5c8099511e5ff83e5 100644 (file)
@@ -931,9 +931,17 @@ int blkid_probe_set_device(blkid_probe pr, int fd,
                        DBG(LOWPROBE, ul_debug("failed to get device size"));
                        goto err;
                }
-       } else if (S_ISCHR(sb.st_mode))
+       } else if (S_ISCHR(sb.st_mode)) {
+               char buf[PATH_MAX];
+
+               if (!sysfs_chrdev_devno_to_devname(sb.st_rdev, buf, sizeof(buf))
+                   || strncmp(buf, "ubi", 3) != 0) {
+                       DBG(LOWPROBE, ul_debug("no UBI char device"));
+                       errno = EINVAL;
+                       goto err;
+               }
                devsiz = 1;             /* UBI devices are char... */
-       else if (S_ISREG(sb.st_mode))
+       else if (S_ISREG(sb.st_mode))
                devsiz = sb.st_size;    /* regular file */
 
        pr->size = size ? (uint64_t)size : devsiz;