dcavalca / rpms / util-linux

Forked from rpms/util-linux 2 years ago
Clone

Blame SOURCES/0071-libblkid-check-UBI-char-device-name.patch

e86b25
From 7ce318610afcbb793e438332687c2f09844a86c2 Mon Sep 17 00:00:00 2001
e86b25
From: Karel Zak <kzak@redhat.com>
e86b25
Date: Thu, 25 Nov 2021 11:54:11 +0100
e86b25
Subject: [PATCH 71/74] libblkid: check UBI char device name
e86b25
e86b25
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2026511
e86b25
Upstream: http://github.com/util-linux/util-linux/commit/7eb6d9ce4526b968e30f7e538cbbbdf9938e5891
e86b25
Signed-off-by: Karel Zak <kzak@redhat.com>
e86b25
---
e86b25
 libblkid/src/probe.c | 12 ++++++++++--
e86b25
 1 file changed, 10 insertions(+), 2 deletions(-)
e86b25
e86b25
diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c
e86b25
index a6dc8416a..49a62c47f 100644
e86b25
--- a/libblkid/src/probe.c
e86b25
+++ b/libblkid/src/probe.c
e86b25
@@ -915,9 +915,17 @@ int blkid_probe_set_device(blkid_probe pr, int fd,
e86b25
 			DBG(LOWPROBE, ul_debug("failed to get device size"));
e86b25
 			goto err;
e86b25
 		}
e86b25
-	} else if (S_ISCHR(sb.st_mode))
e86b25
+	} else if (S_ISCHR(sb.st_mode)) {
e86b25
+		char buf[PATH_MAX];
e86b25
+
e86b25
+		if (!sysfs_chrdev_devno_to_devname(sb.st_rdev, buf, sizeof(buf))
e86b25
+		    || strncmp(buf, "ubi", 3) != 0) {
e86b25
+			DBG(LOWPROBE, ul_debug("no UBI char device"));
e86b25
+			errno = EINVAL;
e86b25
+			goto err;
e86b25
+		}
e86b25
 		devsiz = 1;		/* UBI devices are char... */
e86b25
-	else if (S_ISREG(sb.st_mode))
e86b25
+	} else if (S_ISREG(sb.st_mode))
e86b25
 		devsiz = sb.st_size;	/* regular file */
e86b25
 
e86b25
 	pr->size = size ? (uint64_t)size : devsiz;
e86b25
-- 
e86b25
2.31.1
e86b25