In the rev. 1.153, the one place for converting minor number to unit

was missed. As result, pty_create_slave() may index out of the names[]
bounds, creating wrong slave tty names.

Tested by:	kensmith
Reviewed by:	jhb
MFC after:	3 days
This commit is contained in:
Konstantin Belousov 2008-01-18 18:07:04 +00:00
parent af3e1b9f22
commit 81aa963bc7

View File

@ -160,6 +160,8 @@ static void
pty_create_slave(struct ucred *cred, struct ptsc *pt, int n)
{
KASSERT(n >= 0 && n / 32 < sizeof(names),
("pty_create_slave: n %d ptsc %p", n, pt));
pt->devs = make_dev_cred(&pts_cdevsw, n, cred, UID_ROOT, GID_WHEEL,
0666, "tty%c%r", names[n / 32], n % 32);
pt->devs->si_drv1 = pt;
@ -350,7 +352,7 @@ ptcopen(struct cdev *dev, int flag, int devtype, struct thread *td)
pt->pt_ucntl = 0;
if (!pt->devs)
pty_create_slave(td->td_ucred, pt, minor(dev));
pty_create_slave(td->td_ucred, pt, minor2unit(minor(dev)));
pt->pt_devc_open = 1;
return (0);