DragonFlyBSD Kernel Audit
DF-1464 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/raid/dpt/dpt_scsi.c b/sys/dev/raid/dpt/dpt_scsi.c
--- a/sys/dev/raid/dpt/dpt_scsi.c
+++ b/sys/dev/raid/dpt/dpt_scsi.c
@@ -946,7 +946,12 @@
 
 				/* Just use the segments provided */
 				segs = (struct bus_dma_segment *)csio->data_ptr;
-				dptexecuteccb(dccb, segs, csio->sglist_cnt, 0);
+				if (csio->sglist_cnt > dpt->sgsize) {
+				ccb->ccb_h.status = CAM_REQ_TOO_BIG;
+				xpt_done(ccb);
+				break;
+			}
+			dptexecuteccb(dccb, segs, csio->sglist_cnt, 0);
 			}
 		} else {
 			/*