[dm-devel] [PATCH v4 12/12] multipathd: fix use-after-free in handle_path_wwid_change()

mwilck at suse.com mwilck at suse.com
Tue Aug 30 19:27:13 UTC 2022


From: Martin Wilck <mwilck at suse.com>

Found by coverity (defect #380536).

Fixes: b4eb57e ("libmultipath, multipathd: log failure setting sysfs attributes")
---
 multipathd/main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/multipathd/main.c b/multipathd/main.c
index 66177cd..2d0a7bc 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -951,10 +951,12 @@ handle_path_wwid_change(struct path *pp, struct vectors *vecs)
 	struct udev_device *udd;
 	static const char add[] = "add";
 	ssize_t ret;
+	char dev[FILE_NAME_SIZE];
 
 	if (!pp || !pp->udev)
 		return;
 
+	strlcpy(dev, pp->dev, sizeof(dev));
 	udd = udev_device_ref(pp->udev);
 	if (!(ev_remove_path(pp, vecs, 1) & REMOVE_PATH_SUCCESS) && pp->mpp) {
 		pp->dmstate = PSTATE_FAILED;
@@ -965,8 +967,7 @@ handle_path_wwid_change(struct path *pp, struct vectors *vecs)
 	udev_device_unref(udd);
 	if (ret != sizeof(add) - 1)
 		log_sysfs_attr_set_value(1, ret,
-					 "%s: failed to trigger add event",
-					 pp->dev);
+					 "%s: failed to trigger add event", dev);
 }
 
 bool
-- 
2.37.1



More information about the dm-devel mailing list