⬢ DragonFlyBSD Kernel Audit
DF-3676 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/disk/mpt/mpt_cam.c
+++ b/sys/dev/disk/mpt/mpt_cam.c
@@ -4628,8 +4628,13 @@ mpt_abort_target_ccb(struct mpt_softc *mpt, union ccb *ccb)
 
 	mpt_lprt(mpt, MPT_PRT_DEBUG, "aborting ccb %p\n", accb);
 
 	if (ccb->ccb_h.target_lun == CAM_LUN_WILDCARD) {
 		trtp = &mpt->trt_wildcard;
-	} else {
+	} else if (ccb->ccb_h.target_lun < MPT_MAX_LUNS) {
 		trtp = &mpt->trt[ccb->ccb_h.target_lun];
+	} else {
+		mpt_prt(mpt, "mpt_abort_target_ccb: bad lun %u\n",
+		    ccb->ccb_h.target_lun);
+		return (CAM_LUN_INVALID);
 	}
 
 	if (accb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO) {