fhandler_pty_master::pty_master_thread: Always check for correct pid

This commit is contained in:
Corinna Vinschen 2015-12-15 21:49:19 +01:00
parent ceab4452f1
commit f4aaa21441
1 changed files with 4 additions and 8 deletions

View File

@ -1517,10 +1517,8 @@ fhandler_pty_slave::fixup_after_exec ()
A special case is when the master side of the tty is about to be closed.
The client side is the fhandler_pty_master::close function and it sends
a PID -1 in that case. On Vista and later a check is performed that the
request to leave really comes from the master process itself. On earlier
OSes there's no function to check for the PID of the client process so
we have to trust the client side.
a PID -1 in that case. A check is performed that the request to leave
really comes from the master process itself.
Since there's always only one pipe instance, there's a chance that clients
have to wait to connect to the master control pipe. Therefore the client
@ -1595,10 +1593,8 @@ fhandler_pty_master::pty_master_thread ()
}
if (req.pid == (DWORD) -1) /* Request to finish thread. */
{
/* Pre-Vista: Just believe in the good of the client process.
Post-Vista: Check if the requesting process is the master
process itself. */
if (pid == (DWORD) -1 || pid == GetCurrentProcessId ())
/* Check if the requesting process is the master process itself. */
if (pid == GetCurrentProcessId ())
exit = true;
goto reply;
}