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:
parent
af3e1b9f22
commit
81aa963bc7
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user