⬢ DragonFlyBSD Kernel Audit
DF-2456 / fix.diff
← back to finding ↓ download raw
# DF-2456 fix (authored post-verification; not applied to sys/)
--- a/sys/dev/disk/fd/fd.c
+++ b/sys/dev/disk/fd/fd.c
@@ -2268,6 +2268,10 @@ fdformat(cdev_t dev, struct fd_formb *finfo, struct ucred *cred)
 	fdu	= dkunit(dev);
 	fd	= devclass_get_softc(fd_devclass, fdu);
 	fdblk = 128 << fd->ft.secsize;
 
+	if (finfo->fd_formb_nsecs == 0 ||
+	    finfo->fd_formb_nsecs > FD_MAX_NSEC)
+		return (EINVAL);
+
 	/* set up a buffer header for fdstrategy() */
 	bp = getpbuf(NULL);