Jacek Caban : kernelbase: Duplicate input and output handles to ensure that they are inheritable.
Module: wine Branch: master Commit: 0e3edfd9422b811bc9b4c90110133fa342ae204e URL: https://source.winehq.org/git/wine.git/?a=commit;h=0e3edfd9422b811bc9b4c9011... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Sep 24 17:26:58 2020 +0200 kernelbase: Duplicate input and output handles to ensure that they are inheritable. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernelbase/console.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index ce041020a3..502fbcddaf 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -1732,6 +1732,7 @@ HRESULT WINAPI CreatePseudoConsole( COORD size, HANDLE input, HANDLE output, DWO { SECURITY_ATTRIBUTES inherit_attr = { sizeof(inherit_attr), NULL, TRUE }; struct pseudo_console *pseudo_console; + HANDLE tty_input = NULL, tty_output; HANDLE signal = NULL; WCHAR pipe_name[64]; @@ -1751,9 +1752,15 @@ HRESULT WINAPI CreatePseudoConsole( COORD size, HANDLE input, HANDLE output, DWO return HRESULT_FROM_WIN32( GetLastError() ); } pseudo_console->signal = CreateFileW( pipe_name, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); - if (pseudo_console->signal != INVALID_HANDLE_VALUE) - pseudo_console->reference = create_pseudo_console( size, input, output, signal, flags, + if (pseudo_console->signal != INVALID_HANDLE_VALUE && + DuplicateHandle( GetCurrentProcess(), input, GetCurrentProcess(), &tty_input, 0, TRUE, DUPLICATE_SAME_ACCESS) && + DuplicateHandle( GetCurrentProcess(), output, GetCurrentProcess(), &tty_output, 0, TRUE, DUPLICATE_SAME_ACCESS)) + { + pseudo_console->reference = create_pseudo_console( size, tty_input, tty_output, signal, flags, &pseudo_console->process ); + NtClose( tty_output ); + } + NtClose( tty_input ); NtClose( signal ); if (!pseudo_console->reference) {
participants (1)
-
Alexandre Julliard