From 8ddb678639042b4840ee828bbd301fa274b3e893 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 1 Oct 2024 10:16:18 +0200 Subject: [PATCH] [channels,cliprdr] fix server side send routine --- channels/cliprdr/server/cliprdr_main.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/channels/cliprdr/server/cliprdr_main.c b/channels/cliprdr/server/cliprdr_main.c index 8e374eb20..df885ddba 100644 --- a/channels/cliprdr/server/cliprdr_main.c +++ b/channels/cliprdr/server/cliprdr_main.c @@ -78,32 +78,24 @@ */ static UINT cliprdr_server_packet_send(CliprdrServerPrivate* cliprdr, wStream* s) { - UINT rc = 0; - size_t pos = 0; - BOOL status = 0; - UINT32 dataLen = 0; - ULONG written = 0; + UINT rc = ERROR_INTERNAL_ERROR; WINPR_ASSERT(cliprdr); - pos = Stream_GetPosition(s); + const size_t pos = Stream_GetPosition(s); if ((pos < 8) || (pos > UINT32_MAX)) { rc = ERROR_NO_DATA; goto fail; } - dataLen = (UINT32)(pos - 8); + const UINT32 dataLen = (UINT32)(pos - 8); Stream_SetPosition(s, 4); Stream_Write_UINT32(s, dataLen); - if (pos > UINT32_MAX) - { - rc = ERROR_INVALID_DATA; - goto fail; - } - status = WTSVirtualChannelWrite(cliprdr->ChannelHandle, (PCHAR)Stream_Buffer(s), (UINT32)pos, - &written); + ULONG written = 0; + const BOOL status = WTSVirtualChannelWrite(cliprdr->ChannelHandle, (PCHAR)Stream_Buffer(s), + (UINT32)pos, &written); rc = status ? CHANNEL_RC_OK : ERROR_INTERNAL_ERROR; fail: Stream_Free(s, TRUE);