From 76169c26cd612eecd73ffd51527847d716f2dc23 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 27 Jul 2023 18:29:56 +0200 Subject: [PATCH] [core,caps] fix warnings --- libfreerdp/core/capabilities.c | 349 ++++++++++----------------------- 1 file changed, 109 insertions(+), 240 deletions(-) diff --git a/libfreerdp/core/capabilities.c b/libfreerdp/core/capabilities.c index 218c16e71..8086cdf37 100644 --- a/libfreerdp/core/capabilities.c +++ b/libfreerdp/core/capabilities.c @@ -139,9 +139,13 @@ static size_t rdp_capability_set_start(wStream* s) return header; } -static BOOL rdp_capability_set_finish(wStream* s, UINT16 header, UINT16 type) +static BOOL rdp_capability_set_finish(wStream* s, size_t header, UINT16 type) { const size_t footer = Stream_GetPosition(s); + if (header > footer) + return FALSE; + if (header > UINT16_MAX) + return FALSE; const size_t length = footer - header; if ((Stream_Capacity(s) < header + 4ULL) || (length > UINT16_MAX)) return FALSE; @@ -235,16 +239,11 @@ static BOOL rdp_read_general_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_general_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 extraFlags; - if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - extraFlags = 0; + const size_t header = rdp_capability_set_start(s); + UINT16 extraFlags = 0; WINPR_ASSERT(settings); if (settings->LongCredentialsSupported) @@ -283,7 +282,7 @@ static BOOL rdp_write_general_capability_set(wStream* s, const rdpSettings* sett s, settings->CapsGeneralCompressionLevel); /* generalCompressionLevel (2 bytes) */ Stream_Write_UINT8(s, settings->RefreshRect ? 1 : 0); /* refreshRectSupport (1 byte) */ Stream_Write_UINT8(s, settings->SuppressOutput ? 1 : 0); /* suppressOutputSupport (1 byte) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_GENERAL); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_GENERAL); } #ifdef WITH_DEBUG_CAPABILITIES @@ -413,16 +412,13 @@ static BOOL rdp_read_bitmap_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_bitmap_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; BYTE drawingFlags = 0; - UINT16 preferredBitsPerPixel; + UINT16 preferredBitsPerPixel = 0; if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); WINPR_ASSERT(settings); if (settings->DrawAllowSkipAlpha) @@ -465,7 +461,7 @@ static BOOL rdp_write_bitmap_capability_set(wStream* s, const rdpSettings* setti Stream_Write_UINT8(s, drawingFlags); /* drawingFlags (1 byte) */ Stream_Write_UINT16(s, 1); /* multipleRectangleSupport (2 bytes) */ Stream_Write_UINT16(s, 0); /* pad2OctetsB (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_BITMAP); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP); } #ifdef WITH_DEBUG_CAPABILITIES @@ -621,21 +617,16 @@ static BOOL rdp_read_order_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_order_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 orderFlags; - UINT16 orderSupportExFlags; char terminalDescriptor[16] = { 0 }; WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); - orderSupportExFlags = settings->OrderSupportFlagsEx; - orderFlags = settings->OrderSupportFlags; + UINT16 orderSupportExFlags = settings->OrderSupportFlagsEx; + UINT16 orderFlags = settings->OrderSupportFlags; if (settings->BitmapCacheV3Enabled) { @@ -673,7 +664,7 @@ static BOOL rdp_write_order_capability_set(wStream* s, const rdpSettings* settin Stream_Write_UINT16(s, 0); /* pad2OctetsD (2 bytes) */ Stream_Write_UINT16(s, settings->TextANSICodePage); /* textANSICodePage (2 bytes) */ Stream_Write_UINT16(s, 0); /* pad2OctetsE (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_ORDER); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_ORDER); } #ifdef WITH_DEBUG_CAPABILITIES @@ -813,17 +804,11 @@ static BOOL rdp_read_bitmap_cache_capability_set(wStream* s, rdpSettings* settin static BOOL rdp_write_bitmap_cache_capability_set(wStream* s, const rdpSettings* settings) { - UINT32 bpp; - size_t header; - UINT32 size; - if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - bpp = (freerdp_settings_get_uint32(settings, FreeRDP_ColorDepth) + 7) / 8; + const size_t header = rdp_capability_set_start(s); + const UINT32 bpp = (freerdp_settings_get_uint32(settings, FreeRDP_ColorDepth) + 7) / 8; if (bpp > UINT16_MAX) return FALSE; Stream_Write_UINT32(s, 0); /* pad1 (4 bytes) */ @@ -832,7 +817,7 @@ static BOOL rdp_write_bitmap_cache_capability_set(wStream* s, const rdpSettings* Stream_Write_UINT32(s, 0); /* pad4 (4 bytes) */ Stream_Write_UINT32(s, 0); /* pad5 (4 bytes) */ Stream_Write_UINT32(s, 0); /* pad6 (4 bytes) */ - size = bpp * 256; + UINT32 size = bpp * 256; if (size > UINT16_MAX) return FALSE; Stream_Write_UINT16(s, 200); /* Cache0Entries (2 bytes) */ @@ -847,7 +832,7 @@ static BOOL rdp_write_bitmap_cache_capability_set(wStream* s, const rdpSettings* return FALSE; Stream_Write_UINT16(s, 1000); /* Cache2Entries (2 bytes) */ Stream_Write_UINT16(s, (UINT16)size); /* Cache2MaximumCellSize (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_BITMAP_CACHE); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP_CACHE); } #ifdef WITH_DEBUG_CAPABILITIES @@ -927,20 +912,16 @@ static BOOL rdp_read_control_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_control_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_UNUSED(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT16(s, 0); /* controlFlags (2 bytes) */ Stream_Write_UINT16(s, 0); /* remoteDetachFlag (2 bytes) */ Stream_Write_UINT16(s, 2); /* controlInterest (2 bytes) */ Stream_Write_UINT16(s, 2); /* detachInterest (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_CONTROL); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_CONTROL); } #ifdef WITH_DEBUG_CAPABILITIES @@ -1002,21 +983,17 @@ static BOOL rdp_read_window_activation_capability_set(wStream* s, rdpSettings* s static BOOL rdp_write_window_activation_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_UNUSED(settings); WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT16(s, 0); /* helpKeyFlag (2 bytes) */ Stream_Write_UINT16(s, 0); /* helpKeyIndexFlag (2 bytes) */ Stream_Write_UINT16(s, 0); /* helpExtendedKeyFlag (2 bytes) */ Stream_Write_UINT16(s, 0); /* windowManagerKeyFlag (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_ACTIVATION); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_ACTIVATION); } #ifdef WITH_DEBUG_CAPABILITIES @@ -1111,14 +1088,10 @@ static BOOL rdp_read_pointer_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_pointer_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); if (settings->PointerCacheSize > UINT16_MAX) return FALSE; if (settings->ColorPointerCacheSize > UINT16_MAX) @@ -1133,7 +1106,7 @@ static BOOL rdp_write_pointer_capability_set(wStream* s, const rdpSettings* sett s, (UINT16)settings->ColorPointerCacheSize); /* colorPointerCacheSize (2 bytes) */ Stream_Write_UINT16(s, (UINT16)settings->PointerCacheSize); /* pointerCacheSize (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_POINTER); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_POINTER); } #ifdef WITH_DEBUG_CAPABILITIES @@ -1190,28 +1163,23 @@ static BOOL rdp_read_share_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_share_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 nodeId; - if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); WINPR_ASSERT(settings); - nodeId = (settings->ServerMode) ? 0x03EA : 0; + const UINT16 nodeId = (settings->ServerMode) ? 0x03EA : 0; Stream_Write_UINT16(s, nodeId); /* nodeId (2 bytes) */ Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_SHARE); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_SHARE); } #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_share_capability_set(wStream* s) { - UINT16 nodeId; - UINT16 pad2Octets; + UINT16 nodeId = 0; + UINT16 pad2Octets = 0; WLog_VRB(TAG, "ShareCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); if (!Stream_CheckAndLogRequiredLength(TAG, s, 4)) @@ -1255,18 +1223,14 @@ static BOOL rdp_read_color_cache_capability_set(wStream* s, rdpSettings* setting static BOOL rdp_write_color_cache_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_UNUSED(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT16(s, 6); /* colorTableCacheSize (2 bytes) */ Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_COLOR_CACHE); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_COLOR_CACHE); } #ifdef WITH_DEBUG_CAPABILITIES @@ -1323,20 +1287,15 @@ static BOOL rdp_read_sound_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_sound_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 soundFlags; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - soundFlags = (settings->SoundBeepsEnabled) ? SOUND_BEEPS_FLAG : 0; + const size_t header = rdp_capability_set_start(s); + const UINT16 soundFlags = (settings->SoundBeepsEnabled) ? SOUND_BEEPS_FLAG : 0; Stream_Write_UINT16(s, soundFlags); /* soundFlags (2 bytes) */ Stream_Write_UINT16(s, 0); /* pad2OctetsA (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_SOUND); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_SOUND); } #ifdef WITH_DEBUG_CAPABILITIES @@ -1459,17 +1418,12 @@ static BOOL rdp_read_input_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_input_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 inputFlags; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 128)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - inputFlags = INPUT_FLAG_SCANCODES; + const size_t header = rdp_capability_set_start(s); + UINT16 inputFlags = INPUT_FLAG_SCANCODES; if (settings->FastPathInput) { @@ -1493,7 +1447,7 @@ static BOOL rdp_write_input_capability_set(wStream* s, const rdpSettings* settin Stream_Write_UINT32(s, settings->KeyboardSubType); /* keyboardSubType (4 bytes) */ Stream_Write_UINT32(s, settings->KeyboardFunctionKey); /* keyboardFunctionKeys (4 bytes) */ Stream_Zero(s, 64); /* imeFileName (64 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_INPUT); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_INPUT); } #ifdef WITH_DEBUG_CAPABILITIES @@ -1558,18 +1512,14 @@ static BOOL rdp_read_font_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_font_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_UNUSED(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT16(s, FONTSUPPORT_FONTLIST); /* fontSupportFlags (2 bytes) */ Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_FONT); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_FONT); } #ifdef WITH_DEBUG_CAPABILITIES @@ -1624,23 +1574,19 @@ static BOOL rdp_read_brush_capability_set(wStream* s, rdpSettings* settings) static BOOL rdp_write_brush_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT32(s, settings->BrushSupportLevel); /* brushSupportLevel (4 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_BRUSH); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_BRUSH); } #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_brush_capability_set(wStream* s) { - UINT32 brushSupportLevel; + UINT32 brushSupportLevel = 0; WLog_VRB(TAG, "BrushCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); if (!Stream_CheckAndLogRequiredLength(TAG, s, 4)) @@ -1724,33 +1670,29 @@ static BOOL rdp_read_glyph_cache_capability_set(wStream* s, rdpSettings* setting static BOOL rdp_write_glyph_cache_capability_set(wStream* s, const rdpSettings* settings) { - size_t header, x; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); if (settings->GlyphSupportLevel > UINT16_MAX) return FALSE; /* glyphCache (40 bytes) */ - for (x = 0; x < 10; x++) + for (size_t x = 0; x < 10; x++) rdp_write_cache_definition(s, &(settings->GlyphCache[x])); /* glyphCache0 (4 bytes) */ rdp_write_cache_definition(s, settings->FragCache); /* fragCache (4 bytes) */ Stream_Write_UINT16(s, (UINT16)settings->GlyphSupportLevel); /* glyphSupportLevel (2 bytes) */ Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_GLYPH_CACHE); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_GLYPH_CACHE); } #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_glyph_cache_capability_set(wStream* s) { - GLYPH_CACHE_DEFINITION glyphCache[10]; - GLYPH_CACHE_DEFINITION fragCache; - UINT16 glyphSupportLevel; - UINT16 pad2Octets; + GLYPH_CACHE_DEFINITION glyphCache[10] = { 0 }; + GLYPH_CACHE_DEFINITION fragCache = { 0 }; + UINT16 glyphSupportLevel = 0; + UINT16 pad2Octets = 0; WLog_VRB(TAG, "GlyphCacheCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); if (!Stream_CheckAndLogRequiredLength(TAG, s, 48)) @@ -1840,16 +1782,13 @@ static BOOL rdp_read_offscreen_bitmap_cache_capability_set(wStream* s, rdpSettin static BOOL rdp_write_offscreen_bitmap_cache_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; UINT32 offscreenSupportLevel = 0x00; WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); if (settings->OffscreenSupportLevel) { offscreenSupportLevel = 0x01; @@ -1861,15 +1800,15 @@ static BOOL rdp_write_offscreen_bitmap_cache_capability_set(wStream* s, const rd else Stream_Zero(s, 8); - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_OFFSCREEN_CACHE); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_OFFSCREEN_CACHE); } #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_offscreen_bitmap_cache_capability_set(wStream* s) { - UINT32 offscreenSupportLevel; - UINT16 offscreenCacheSize; - UINT16 offscreenCacheEntries; + UINT32 offscreenSupportLevel = 0; + UINT16 offscreenCacheSize = 0; + UINT16 offscreenCacheEntries = 0; WLog_VRB(TAG, "OffscreenBitmapCacheCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); @@ -1922,7 +1861,6 @@ static BOOL rdp_read_bitmap_cache_host_support_capability_set(wStream* s, rdpSet static BOOL rdp_write_bitmap_cache_host_support_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; UINT8 cacheVersion = 0; if (freerdp_settings_get_bool(settings, FreeRDP_BitmapCacheEnabled)) @@ -1931,13 +1869,11 @@ static BOOL rdp_write_bitmap_cache_host_support_capability_set(wStream* s, if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT8(s, cacheVersion); /* cacheVersion (1 byte) */ Stream_Write_UINT8(s, 0); /* pad1 (1 byte) */ Stream_Write_UINT16(s, 0); /* pad2 (2 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_BITMAP_CACHE_HOST_SUPPORT); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP_CACHE_HOST_SUPPORT); } #ifdef WITH_DEBUG_CAPABILITIES @@ -2068,17 +2004,12 @@ static BOOL rdp_read_bitmap_cache_v2_capability_set(wStream* s, rdpSettings* set static BOOL rdp_write_bitmap_cache_v2_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 cacheFlags; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - cacheFlags = ALLOW_CACHE_WAITING_LIST_FLAG; + const size_t header = rdp_capability_set_start(s); + UINT16 cacheFlags = ALLOW_CACHE_WAITING_LIST_FLAG; if (freerdp_settings_get_bool(settings, FreeRDP_BitmapCachePersistEnabled)) { @@ -2216,16 +2147,11 @@ static BOOL rdp_read_virtual_channel_capability_set(wStream* s, rdpSettings* set static BOOL rdp_write_virtual_channel_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT32(s, settings->VirtualChannelCompressionFlags); /* flags (4 bytes) */ Stream_Write_UINT32(s, settings->VirtualChannelChunkSize); /* VCChunkSize (4 bytes) */ return rdp_capability_set_finish(s, header, CAPSET_TYPE_VIRTUAL_CHANNEL); @@ -2234,8 +2160,8 @@ static BOOL rdp_write_virtual_channel_capability_set(wStream* s, const rdpSettin #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_virtual_channel_capability_set(wStream* s) { - UINT32 flags; - UINT32 VCChunkSize; + UINT32 flags = 0; + UINT32 VCChunkSize = 0; WLog_VRB(TAG, "VirtualChannelCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); if (!Stream_CheckAndLogRequiredLength(TAG, s, 4)) @@ -2299,17 +2225,12 @@ static BOOL rdp_read_draw_nine_grid_cache_capability_set(wStream* s, rdpSettings static BOOL rdp_write_draw_nine_grid_cache_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT32 drawNineGridSupportLevel; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - drawNineGridSupportLevel = + const size_t header = rdp_capability_set_start(s); + const UINT32 drawNineGridSupportLevel = (settings->DrawNineGridEnabled) ? DRAW_NINEGRID_SUPPORTED_V2 : DRAW_NINEGRID_NO_SUPPORT; Stream_Write_UINT32(s, drawNineGridSupportLevel); /* drawNineGridSupportLevel (4 bytes) */ Stream_Write_UINT16(s, settings->DrawNineGridCacheSize); /* drawNineGridCacheSize (2 bytes) */ @@ -2415,21 +2336,16 @@ static BOOL rdp_read_draw_gdiplus_cache_capability_set(wStream* s, rdpSettings* static BOOL rdp_write_draw_gdiplus_cache_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT32 drawGDIPlusSupportLevel; - UINT32 drawGdiplusCacheLevel; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - drawGDIPlusSupportLevel = + const size_t header = rdp_capability_set_start(s); + const UINT32 drawGDIPlusSupportLevel = (settings->DrawGdiPlusEnabled) ? DRAW_GDIPLUS_SUPPORTED : DRAW_GDIPLUS_DEFAULT; - drawGdiplusCacheLevel = (settings->DrawGdiPlusEnabled) ? DRAW_GDIPLUS_CACHE_LEVEL_ONE - : DRAW_GDIPLUS_CACHE_LEVEL_DEFAULT; + const UINT32 drawGdiplusCacheLevel = (settings->DrawGdiPlusEnabled) + ? DRAW_GDIPLUS_CACHE_LEVEL_ONE + : DRAW_GDIPLUS_CACHE_LEVEL_DEFAULT; Stream_Write_UINT32(s, drawGDIPlusSupportLevel); /* drawGDIPlusSupportLevel (4 bytes) */ Stream_Write_UINT32(s, 0); /* GdipVersion (4 bytes) */ Stream_Write_UINT32(s, drawGdiplusCacheLevel); /* drawGdiplusCacheLevel (4 bytes) */ @@ -2509,17 +2425,12 @@ static BOOL rdp_read_remote_programs_capability_set(wStream* s, rdpSettings* set static BOOL rdp_write_remote_programs_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT32 railSupportLevel; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - railSupportLevel = RAIL_LEVEL_SUPPORTED; + const size_t header = rdp_capability_set_start(s); + UINT32 railSupportLevel = RAIL_LEVEL_SUPPORTED; if (settings->RemoteApplicationSupportLevel & RAIL_LEVEL_DOCKED_LANGBAR_SUPPORTED) { @@ -2591,15 +2502,11 @@ static BOOL rdp_read_window_list_capability_set(wStream* s, rdpSettings* setting static BOOL rdp_write_window_list_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT32(s, settings->RemoteWndSupportLevel); /* wndSupportLevel (4 bytes) */ Stream_Write_UINT8(s, settings->RemoteAppNumIconCaches); /* numIconCaches (1 byte) */ Stream_Write_UINT16(s, @@ -2662,18 +2569,13 @@ static BOOL rdp_read_desktop_composition_capability_set(wStream* s, rdpSettings* static BOOL rdp_write_desktop_composition_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 compDeskSupportLevel; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - compDeskSupportLevel = + const size_t header = rdp_capability_set_start(s); + const UINT16 compDeskSupportLevel = (settings->AllowDesktopComposition) ? COMPDESK_SUPPORTED : COMPDESK_NOT_SUPPORTED; Stream_Write_UINT16(s, compDeskSupportLevel); /* compDeskSupportLevel (2 bytes) */ return rdp_capability_set_finish(s, header, CAPSET_TYPE_COMP_DESK); @@ -2783,8 +2685,6 @@ static BOOL rdp_read_multifragment_update_capability_set(wStream* s, rdpSettings static BOOL rdp_write_multifragment_update_capability_set(wStream* s, rdpSettings* settings) { - size_t header; - WINPR_ASSERT(settings); if (settings->ServerMode && settings->MultifragMaxRequestSize == 0) { @@ -2808,9 +2708,7 @@ static BOOL rdp_write_multifragment_update_capability_set(wStream* s, rdpSetting if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT32(s, settings->MultifragMaxRequestSize); /* MaxRequestSize (4 bytes) */ return rdp_capability_set_finish(s, header, CAPSET_TYPE_MULTI_FRAGMENT_UPDATE); } @@ -2873,17 +2771,12 @@ static BOOL rdp_read_large_pointer_capability_set(wStream* s, rdpSettings* setti static BOOL rdp_write_large_pointer_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT16 largePointerSupportFlags; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - largePointerSupportFlags = + const size_t header = rdp_capability_set_start(s); + const UINT16 largePointerSupportFlags = settings->LargePointerFlag & (LARGE_POINTER_FLAG_96x96 | LARGE_POINTER_FLAG_384x384); Stream_Write_UINT16(s, largePointerSupportFlags); /* largePointerSupportFlags (2 bytes) */ return rdp_capability_set_finish(s, header, CAPSET_TYPE_LARGE_POINTER); @@ -2942,17 +2835,12 @@ static BOOL rdp_read_surface_commands_capability_set(wStream* s, rdpSettings* se static BOOL rdp_write_surface_commands_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - UINT32 cmdFlags; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - cmdFlags = SURFCMDS_SET_SURFACE_BITS | SURFCMDS_STREAM_SURFACE_BITS; + const size_t header = rdp_capability_set_start(s); + UINT32 cmdFlags = SURFCMDS_SET_SURFACE_BITS | SURFCMDS_STREAM_SURFACE_BITS; if (settings->SurfaceFrameMarkerEnabled) cmdFlags |= SURFCMDS_FRAME_MARKER; @@ -2965,8 +2853,9 @@ static BOOL rdp_write_surface_commands_capability_set(wStream* s, const rdpSetti #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_surface_commands_capability_set(wStream* s) { - UINT32 cmdFlags; - UINT32 reserved; + UINT32 cmdFlags = 0; + UINT32 reserved = 0; + WLog_VRB(TAG, "SurfaceCommandsCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); @@ -3089,11 +2978,11 @@ static BOOL rdp_apply_bitmap_codecs_capability_set(rdpSettings* settings, const static BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, rdpSettings* settings, BOOL isServer) { - BYTE codecId; - GUID codecGuid; + BYTE codecId = 0; + GUID codecGuid = { 0 }; RPC_STATUS rpc_status; - BYTE bitmapCodecCount; - UINT16 codecPropertiesLength; + BYTE bitmapCodecCount = 0; + UINT16 codecPropertiesLength = 0; BOOL guidNSCodec = FALSE; BOOL guidRemoteFx = FALSE; @@ -3107,9 +2996,7 @@ static BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, rdpSettings* setti while (bitmapCodecCount > 0) { - size_t rest; - wStream subbuffer; - wStream* sub; + wStream subbuffer = { 0 }; if (!rdp_read_bitmap_codec_guid(s, &codecGuid)) /* codecGuid (16 bytes) */ return FALSE; @@ -3118,7 +3005,7 @@ static BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, rdpSettings* setti Stream_Read_UINT8(s, codecId); /* codecId (1 byte) */ Stream_Read_UINT16(s, codecPropertiesLength); /* codecPropertiesLength (2 bytes) */ - sub = Stream_StaticInit(&subbuffer, Stream_Pointer(s), codecPropertiesLength); + wStream* sub = Stream_StaticInit(&subbuffer, Stream_Pointer(s), codecPropertiesLength); if (!Stream_SafeSeek(s, codecPropertiesLength)) return FALSE; @@ -3126,9 +3013,9 @@ static BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, rdpSettings* setti { if (UuidEqual(&codecGuid, &CODEC_GUID_REMOTEFX, &rpc_status)) { - UINT32 rfxCapsLength; - UINT32 rfxPropsLength; - UINT32 captureFlags; + UINT32 rfxCapsLength = 0; + UINT32 rfxPropsLength = 0; + UINT32 captureFlags = 0; guidRemoteFx = TRUE; settings->RemoteFxCodecId = codecId; if (!Stream_CheckAndLogRequiredLength(TAG, sub, 12)) @@ -3269,7 +3156,7 @@ static BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, rdpSettings* setti return FALSE; } - rest = Stream_GetRemainingLength(sub); + const size_t rest = Stream_GetRemainingLength(sub); if (rest > 0) { WLog_ERR(TAG, @@ -3433,17 +3320,12 @@ static BOOL rdp_write_nsc_server_capability_container(wStream* s, const rdpSetti static BOOL rdp_write_bitmap_codecs_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - BYTE bitmapCodecCount; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 64)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; - bitmapCodecCount = 0; + const size_t header = rdp_capability_set_start(s); + BYTE bitmapCodecCount = 0; if (settings->RemoteFxCodec) bitmapCodecCount++; @@ -3553,10 +3435,10 @@ static BOOL rdp_write_bitmap_codecs_capability_set(wStream* s, const rdpSettings #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_bitmap_codecs_capability_set(wStream* s) { - GUID codecGuid; - BYTE bitmapCodecCount; - BYTE codecId; - UINT16 codecPropertiesLength; + GUID codecGuid = { 0 }; + BYTE bitmapCodecCount = 0; + BYTE codecId = 0; + UINT16 codecPropertiesLength = 0; WLog_VRB(TAG, "BitmapCodecsCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); @@ -3622,17 +3504,13 @@ static BOOL rdp_read_frame_acknowledge_capability_set(wStream* s, rdpSettings* s static BOOL rdp_write_frame_acknowledge_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); Stream_Write_UINT32(s, settings->FrameAcknowledge); /* (4 bytes) */ - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_FRAME_ACKNOWLEDGE); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_FRAME_ACKNOWLEDGE); } #ifdef WITH_DEBUG_CAPABILITIES @@ -3677,25 +3555,21 @@ static BOOL rdp_read_bitmap_cache_v3_codec_id_capability_set(wStream* s, rdpSett static BOOL rdp_write_bitmap_cache_v3_codec_id_capability_set(wStream* s, const rdpSettings* settings) { - size_t header; - WINPR_ASSERT(settings); if (!Stream_EnsureRemainingCapacity(s, 32)) return FALSE; - header = rdp_capability_set_start(s); - if (header > UINT16_MAX) - return FALSE; + const size_t header = rdp_capability_set_start(s); if (settings->BitmapCacheV3CodecId > UINT8_MAX) return FALSE; Stream_Write_UINT8(s, (UINT8)settings->BitmapCacheV3CodecId); - return rdp_capability_set_finish(s, (UINT16)header, CAPSET_TYPE_BITMAP_CACHE_V3_CODEC_ID); + return rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP_CACHE_V3_CODEC_ID); } #ifdef WITH_DEBUG_CAPABILITIES static BOOL rdp_print_bitmap_cache_v3_codec_id_capability_set(wStream* s) { - BYTE bitmapCacheV3CodecId; + BYTE bitmapCacheV3CodecId = 0; WLog_VRB(TAG, "BitmapCacheV3CodecIdCapabilitySet (length %" PRIuz "):", Stream_GetRemainingLength(s)); @@ -3710,9 +3584,9 @@ static BOOL rdp_print_bitmap_cache_v3_codec_id_capability_set(wStream* s) BOOL rdp_print_capability_sets(wStream* s, size_t start, BOOL receiving) { BOOL rc = FALSE; - UINT16 type; - UINT16 length; - UINT16 numberCapabilities; + UINT16 type = 0; + UINT16 length = 0; + UINT16 numberCapabilities = 0; size_t pos = Stream_GetPosition(s); @@ -4014,9 +3888,6 @@ static BOOL rdp_apply_from_received(UINT16 type, rdpSettings* dst, const rdpSett BOOL rdp_read_capability_set(wStream* sub, UINT16 type, rdpSettings* settings, BOOL isServer) { - BOOL treated; - size_t rest; - WINPR_ASSERT(settings); if (type <= CAPSET_TYPE_FRAME_ACKNOWLEDGE) @@ -4037,11 +3908,9 @@ BOOL rdp_read_capability_set(wStream* sub, UINT16 type, rdpSettings* settings, B settings->ReceivedCapabilityData[type] = tmp; } else - { WLog_WARN(TAG, "not handling capability type %" PRIu16 " yet", type); - } - treated = TRUE; + BOOL treated = TRUE; switch (type) { @@ -4250,12 +4119,12 @@ BOOL rdp_read_capability_set(wStream* sub, UINT16 type, rdpSettings* settings, B } } - rest = Stream_GetRemainingLength(sub); + const size_t rest = Stream_GetRemainingLength(sub); if (rest > 0) { const size_t length = Stream_Capacity(sub); WLog_ERR(TAG, - "incorrect offset, type:0x%04" PRIX16 " actual:%" PRIuz " expected:%" PRIuz "", + "incorrect offset, type:0x%04" PRIx16 " actual:%" PRIuz " expected:%" PRIuz "", type, length - rest, length); } return TRUE;