Date: Thu, 20 Dec 2007 16:20:53 -0500 From: John Baldwin <jhb@freebsd.org> To: src-committers@freebsd.org Cc: cvs-src@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/lib/libutil pty.c Message-ID: <200712201620.53949.jhb@freebsd.org> In-Reply-To: <200712202110.lBKLA62l076058@repoman.freebsd.org> References: <200712202110.lBKLA62l076058@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 20 December 2007 04:10:06 pm John Baldwin wrote: > jhb 2007-12-20 21:10:06 UTC > > FreeBSD src repository > > Modified files: > lib/libutil pty.c > Log: > Invoke revoke(2) on the slave pty in the pts(4) case (new_openpty()) to > kick off any other users on the device line before using it since > openpty(3) is documented to do this. Note that grantpt(3) does not > call revoke(2), it only adjusts permissions and ownership. > > MFC after: 3 days For a cute demonstration do something like this: 1) ssh foo in one window 2) ssh foo in another window note that pty in this window is /dev/pts/1 or some such end the ssh session 3) cat /dev/pts/1 in the first window (it should still be owned by your user) 4) ssh foo again in second window 5) note that the 'cat' didn't terminate.. now when you type in chars to your second window they will go to one of the two windows (seems to roughly ping-pong) 6) logout from window two, and the 'cat' in window one will die with ENXIO (presumbly due to a revoke(2) being done in sshd when the pty is closed) With this fix, the 'cat' in 3) gets terminated with ENXIO during 4). Note that the pty(4) case already gets this correct (which is what <= 7.x use). (In general cat on a slave pty you are already using in another window is a bit of an odd experience.) -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712201620.53949.jhb>