⬢ DragonFlyBSD Kernel Audit
DF-2487 / fix.diff
← back to finding ↓ download raw
--- /home/maxx/dfbsd/dfbsd/sys/dev/disk/mpt/mpt_user.c	2026-06-29 12:51:18.000000000 +0000
+++ /tmp/opencode/fixtree/sys/dev/disk/mpt/mpt_user.c	2026-10-24 09:43:41.294333244 +0000
@@ -33,6 +33,7 @@
  */
 
 #include <sys/param.h>
+#include <sys/fcntl.h>
 #include <sys/conf.h>
 #include <sys/device.h>
 #include <sys/errno.h>
@@ -715,6 +716,10 @@
 	case MPTIO_WRITE_CFG_PAGE32:
 #endif
 	case MPTIO_WRITE_CFG_PAGE:
+		if ((ap->a_fflag & FWRITE) == 0) {
+			error = EPERM;	/* read-only fd: no cfg rewrites */
+			break;
+		}
 		error = mpt_alloc_buffer(mpt, &mpt_page, page_req->len);
 		if (error)
 			break;
@@ -729,6 +734,10 @@
 	case MPTIO_RAID_ACTION32:
 #endif
 	case MPTIO_RAID_ACTION:
+		if ((ap->a_fflag & FWRITE) == 0) {
+			error = EPERM;	/* read-only fd: no RAID actions */
+			break;
+		}
 		if (raid_act->buf != NULL) {
 			error = mpt_alloc_buffer(mpt, &mpt_page, raid_act->len);
 			if (error)