kernelbase: Move console code page validation to conhost.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2020-10-15 18:20:09 +02:00 committed by Alexandre Julliard
parent 01c17ca260
commit 1d8c2d28cb
2 changed files with 8 additions and 14 deletions

View File

@ -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, &params, 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, &params, sizeof(params), NULL, 0, NULL );

View File

@ -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;
}