DragonFlyBSD Kernel Audit
DF-1738 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/disk/nata/ata-lowlevel.c b/sys/dev/disk/nata/ata-lowlevel.c
--- a/sys/dev/disk/nata/ata-lowlevel.c
+++ b/sys/dev/disk/nata/ata-lowlevel.c
@@ -779,6 +779,10 @@
 		heads = atadev->param.heads;
 		sectors = atadev->param.sectors;
 	    }
+	    if (sectors == 0 || heads == 0) {
+		request->result = EINVAL;
+		return;
+	    }
 
 	    ATA_IDX_OUTB(ch, ATA_SECTOR, (request->u.ata.lba % sectors)+1);
 	    ATA_IDX_OUTB(ch, ATA_CYL_LSB,