DragonFlyBSD Kernel Audit
DF-1171 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/disk/nata/ata-raid.c b/sys/dev/disk/nata/ata-raid.c
--- a/sys/dev/disk/nata/ata-raid.c
+++ b/sys/dev/disk/nata/ata-raid.c
@@ -2228,6 +2228,11 @@
 	    raid->generation = meta->generation;
 	    raid->interleave = map->stripe_sectors;
 	    raid->total_disks = map->total_disks;
+	    if (raid->total_disks > MAX_DISKS) {
+	        device_printf(parent, "Intel RAID total_disks %u exceeds MAX_DISKS "
+	    			      "%d, clamping\n", raid->total_disks, MAX_DISKS);
+	        raid->total_disks = MAX_DISKS;
+	    }
 	    raid->total_sectors = map->total_sectors;
 	    raid->heads = 255;
 	    raid->sectors = 63;