From 1d8c2d28cb2ec313d1b5c1f762624be776a3dca7 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 15 Oct 2020 18:20:09 +0200 Subject: [PATCH] kernelbase: Move console code page validation to conhost. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/kernelbase/console.c | 16 ++-------------- programs/conhost/conhost.c | 6 ++++++ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index 2b3c6c3315a..d387b49c534 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -637,7 +637,7 @@ UINT WINAPI DECLSPEC_HOTPATCH GetConsoleCP(void) if (!console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, IOCTL_CONDRV_GET_INPUT_INFO, NULL, 0, &info, sizeof(info), NULL )) return 0; - return info.input_cp ? info.input_cp : GetOEMCP(); + return info.input_cp; } @@ -710,7 +710,7 @@ UINT WINAPI DECLSPEC_HOTPATCH GetConsoleOutputCP(void) if (!console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, IOCTL_CONDRV_GET_INPUT_INFO, NULL, 0, &info, sizeof(info), NULL )) return 0; - return info.output_cp ? info.output_cp : GetOEMCP(); + return info.output_cp; } @@ -1092,12 +1092,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCP( UINT cp ) { struct condrv_input_info_params params = { SET_CONSOLE_INPUT_INFO_INPUT_CODEPAGE }; - if (!IsValidCodePage( cp )) - { - SetLastError( ERROR_INVALID_PARAMETER ); - return FALSE; - } - params.info.input_cp = cp; return console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, IOCTL_CONDRV_SET_INPUT_INFO, ¶ms, sizeof(params), NULL, 0, NULL ); @@ -1237,12 +1231,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleOutputCP( UINT cp ) { struct condrv_input_info_params params = { SET_CONSOLE_INPUT_INFO_OUTPUT_CODEPAGE }; - if (!IsValidCodePage( cp )) - { - SetLastError( ERROR_INVALID_PARAMETER ); - return FALSE; - } - params.info.output_cp = cp; return console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, IOCTL_CONDRV_SET_INPUT_INFO, ¶ms, sizeof(params), NULL, 0, NULL ); diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c index 3b4255ea310..6985a9ca0b0 100644 --- a/programs/conhost/conhost.c +++ b/programs/conhost/conhost.c @@ -2407,9 +2407,15 @@ static NTSTATUS console_input_ioctl( struct console *console, unsigned int code, TRACE( "set info\n" ); if (in_size != sizeof(*params) || *out_size) return STATUS_INVALID_PARAMETER; if (params->mask & SET_CONSOLE_INPUT_INFO_INPUT_CODEPAGE) + { + if (!IsValidCodePage( params->info.input_cp )) return STATUS_INVALID_PARAMETER; console->input_cp = params->info.input_cp; + } if (params->mask & SET_CONSOLE_INPUT_INFO_OUTPUT_CODEPAGE) + { + if (!IsValidCodePage( params->info.output_cp )) return STATUS_INVALID_PARAMETER; console->output_cp = params->info.output_cp; + } return STATUS_SUCCESS; }