⬢ DragonFlyBSD Kernel Audit
DF-2515 / fix.diff
← back to finding ↓ download raw
--- /home/maxx/dfbsd/dfbsd/sys/dev/disk/sbp/sbp.c	2026-06-29 12:51:18.000000000 +0000
+++ sys/dev/disk/sbp/sbp.c	2026-10-24 09:11:52.098751509 +0000
@@ -2334,7 +2334,14 @@
 			cdb = (void *)csio->cdb_io.cdb_ptr;
 		else
 			cdb = (void *)&csio->cdb_io.cdb_bytes;
-		bcopy(cdb, (void *)&ocb->orb[5], csio->cdb_len);
+		{
+			int cdb_len = csio->cdb_len;
+			if (cdb_len > 12) {
+				kprintf("sbp: CDB too long for ORB, clamped\n");
+				cdb_len = 12;	/* orb[5..7] only */
+			}
+			bcopy(cdb, (void *)&ocb->orb[5], cdb_len);
+		}
 /*
 kprintf("ORB %08x %08x %08x %08x\n", ntohl(ocb->orb[0]), ntohl(ocb->orb[1]), ntohl(ocb->orb[2]), ntohl(ocb->orb[3]));
 kprintf("ORB %08x %08x %08x %08x\n", ntohl(ocb->orb[4]), ntohl(ocb->orb[5]), ntohl(ocb->orb[6]), ntohl(ocb->orb[7]));