From c9e1b789d285fc43c1d8142eb8b4f2fe969c6c45 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 1 Oct 2020 15:08:50 +0200 Subject: [PATCH] conhost: Clear out_size in IOCTL_CONDRV_READ_CONSOLE implementation. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- programs/conhost/conhost.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c index 86a400307db..ac0e22b4c42 100644 --- a/programs/conhost/conhost.c +++ b/programs/conhost/conhost.c @@ -2425,6 +2425,8 @@ static NTSTATUS screen_buffer_ioctl( struct screen_buffer *screen_buffer, unsign static NTSTATUS console_input_ioctl( struct console *console, unsigned int code, const void *in_data, size_t in_size, size_t *out_size ) { + NTSTATUS status; + switch (code) { case IOCTL_CONDRV_GET_MODE: @@ -2446,12 +2448,13 @@ static NTSTATUS console_input_ioctl( struct console *console, unsigned int code, case IOCTL_CONDRV_READ_CONSOLE: if (in_size || *out_size % sizeof(WCHAR)) return STATUS_INVALID_PARAMETER; ensure_tty_input_thread( console ); - return read_console( console, *out_size ); + status = read_console( console, *out_size ); + *out_size = 0; + return status; case IOCTL_CONDRV_READ_INPUT: { unsigned int blocking; - NTSTATUS status; if (in_size && in_size != sizeof(blocking)) return STATUS_INVALID_PARAMETER; ensure_tty_input_thread( console ); blocking = in_size && *(unsigned int *)in_data;