Cygwin: pty: Do not set internal handles in HPCON inheritable.

- The internal handles in HPCON should not be inheritable, however,
  the current code duplicates them as inheritable when handing over
  ownership of the pseudo console. This patch fixes the issue.

Addresses: https://cygwin.com/pipermail/cygwin/2022-April/251222.html
This commit is contained in:
Takashi Yano 2022-04-11 10:44:41 +09:00
parent 27f0913c17
commit b58b5a9660
1 changed files with 4 additions and 4 deletions

View File

@ -2056,7 +2056,7 @@ fhandler_pty_common::resize_pseudo_console (struct winsize *ws)
OpenProcess (PROCESS_DUP_HANDLE, FALSE, get_ttyp ()->nat_pipe_owner_pid); OpenProcess (PROCESS_DUP_HANDLE, FALSE, get_ttyp ()->nat_pipe_owner_pid);
DuplicateHandle (pcon_owner, get_ttyp ()->h_pcon_write_pipe, DuplicateHandle (pcon_owner, get_ttyp ()->h_pcon_write_pipe,
GetCurrentProcess (), &hpcon_local.hWritePipe, GetCurrentProcess (), &hpcon_local.hWritePipe,
0, TRUE, DUPLICATE_SAME_ACCESS); 0, FALSE, DUPLICATE_SAME_ACCESS);
acquire_attach_mutex (mutex_timeout); acquire_attach_mutex (mutex_timeout);
ResizePseudoConsole ((HPCON) &hpcon_local, size); ResizePseudoConsole ((HPCON) &hpcon_local, size);
release_attach_mutex (); release_attach_mutex ();
@ -3551,15 +3551,15 @@ fhandler_pty_slave::close_pseudoconsole (tty *ttyp, DWORD force_switch_to)
DuplicateHandle (GetCurrentProcess (), DuplicateHandle (GetCurrentProcess (),
ttyp->h_pcon_write_pipe, ttyp->h_pcon_write_pipe,
new_owner, &new_write_pipe, new_owner, &new_write_pipe,
0, TRUE, DUPLICATE_SAME_ACCESS); 0, FALSE, DUPLICATE_SAME_ACCESS);
DuplicateHandle (GetCurrentProcess (), DuplicateHandle (GetCurrentProcess (),
ttyp->h_pcon_condrv_reference, ttyp->h_pcon_condrv_reference,
new_owner, &new_condrv_reference, new_owner, &new_condrv_reference,
0, TRUE, DUPLICATE_SAME_ACCESS); 0, FALSE, DUPLICATE_SAME_ACCESS);
DuplicateHandle (GetCurrentProcess (), DuplicateHandle (GetCurrentProcess (),
ttyp->h_pcon_conhost_process, ttyp->h_pcon_conhost_process,
new_owner, &new_conhost_process, new_owner, &new_conhost_process,
0, TRUE, DUPLICATE_SAME_ACCESS); 0, FALSE, DUPLICATE_SAME_ACCESS);
DuplicateHandle (GetCurrentProcess (), ttyp->h_pcon_in, DuplicateHandle (GetCurrentProcess (), ttyp->h_pcon_in,
new_owner, &new_pcon_in, new_owner, &new_pcon_in,
0, TRUE, DUPLICATE_SAME_ACCESS); 0, TRUE, DUPLICATE_SAME_ACCESS);