Jacek Caban : kernelbase: Move console code page validation to conhost.

Alexandre Julliard julliard at winehq.org
Thu Oct 15 15:41:10 CDT 2020


Module: wine
Branch: master
Commit: 1d8c2d28cb2ec313d1b5c1f762624be776a3dca7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1d8c2d28cb2ec313d1b5c1f762624be776a3dca7

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Oct 15 18:20:09 2020 +0200

kernelbase: Move console code page validation to conhost.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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, &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 );
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;
         }
 




More information about the wine-cvs mailing list