DF-2456 / fix.diff
# 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); |