mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 00:14:11 +09:00
[core,settings] fix ReceivedCapabilities reset
This commit is contained in:
@@ -897,7 +897,7 @@ BOOL freerdp_capability_buffer_resize(rdpSettings* settings, size_t count, BOOL
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
const size_t oldsize = force ? 0 : settings->ReceivedCapabilitiesSize;
|
||||
const size_t oldsize = settings->ReceivedCapabilitiesSize;
|
||||
if (!resize_setting(settings, FreeRDP_ReceivedCapabilityDataSizes, oldsize, count,
|
||||
sizeof(uint32_t)))
|
||||
return FALSE;
|
||||
|
||||
@@ -1289,6 +1289,14 @@ static void freerdp_settings_free_internal(rdpSettings* settings)
|
||||
freerdp_settings_free_keys(settings, TRUE);
|
||||
}
|
||||
|
||||
static void freerdp_settings_free_internal_ensure_reset(rdpSettings* settings)
|
||||
{
|
||||
settings->ServerLicenseProductIssuersCount = 0;
|
||||
settings->ServerLicenseProductIssuers = NULL;
|
||||
|
||||
settings->ReceivedCapabilitiesSize = 0;
|
||||
}
|
||||
|
||||
void freerdp_settings_free(rdpSettings* settings)
|
||||
{
|
||||
if (!settings)
|
||||
@@ -1511,15 +1519,13 @@ BOOL freerdp_settings_copy(rdpSettings* _settings, const rdpSettings* settings)
|
||||
|
||||
/* This is required to free all non string buffers */
|
||||
freerdp_settings_free_internal(_settings);
|
||||
|
||||
/* This copies everything except allocated non string buffers. reset all allocated buffers to
|
||||
* NULL to fix issues during cleanup */
|
||||
rc = freerdp_settings_clone_keys(_settings, settings);
|
||||
|
||||
_settings->ServerLicenseProductIssuersCount = 0;
|
||||
_settings->ServerLicenseProductIssuers = NULL;
|
||||
|
||||
if (!rc)
|
||||
goto out_fail;
|
||||
freerdp_settings_free_internal_ensure_reset(_settings);
|
||||
|
||||
/* Begin copying */
|
||||
if (!freerdp_settings_int_buffer_copy(_settings, settings))
|
||||
|
||||
@@ -273,7 +273,7 @@ static BOOL update_write_bitmap_update(rdpUpdate* update, wStream* s,
|
||||
if (!Stream_EnsureRemainingCapacity(s, 32))
|
||||
return FALSE;
|
||||
|
||||
Stream_Write_UINT16(s, UPDATE_TYPE_BITMAP); /* updateType */
|
||||
Stream_Write_UINT16(s, UPDATE_TYPE_BITMAP); /* updateType */
|
||||
Stream_Write_UINT16(s, WINPR_ASSERTING_INT_CAST(
|
||||
uint16_t, bitmapUpdate->number)); /* numberRectangles (2 bytes) */
|
||||
|
||||
@@ -1471,6 +1471,8 @@ static BOOL update_send_frame_acknowledge(rdpContext* context, UINT32 frameId)
|
||||
|
||||
WINPR_ASSERT(rdp);
|
||||
WINPR_ASSERT(rdp->settings);
|
||||
WINPR_ASSERT(rdp->settings->ReceivedCapabilities);
|
||||
WINPR_ASSERT(rdp->settings->ReceivedCapabilitiesSize > CAPSET_TYPE_FRAME_ACKNOWLEDGE);
|
||||
if (rdp->settings->ReceivedCapabilities[CAPSET_TYPE_FRAME_ACKNOWLEDGE])
|
||||
{
|
||||
UINT16 sec_flags = 0;
|
||||
@@ -1554,6 +1556,8 @@ static BOOL update_send_play_sound(rdpContext* context, const PLAY_SOUND_UPDATE*
|
||||
WINPR_ASSERT(rdp);
|
||||
WINPR_ASSERT(rdp->settings);
|
||||
WINPR_ASSERT(play_sound);
|
||||
WINPR_ASSERT(rdp->settings->ReceivedCapabilities);
|
||||
WINPR_ASSERT(rdp->settings->ReceivedCapabilitiesSize > CAPSET_TYPE_SOUND);
|
||||
if (!rdp->settings->ReceivedCapabilities[CAPSET_TYPE_SOUND])
|
||||
{
|
||||
return TRUE;
|
||||
@@ -2826,7 +2830,7 @@ static BOOL update_send_window_icon(rdpContext* context, const WINDOW_ORDER_INFO
|
||||
s, WINPR_ASSERTING_INT_CAST(uint16_t, iconInfo->cbBitsMask)); /* CbBitsMask (2 bytes) */
|
||||
Stream_Write_UINT16(
|
||||
s, WINPR_ASSERTING_INT_CAST(uint16_t, iconInfo->cbBitsColor)); /* CbBitsColor (2 bytes) */
|
||||
Stream_Write(s, iconInfo->bitsMask, iconInfo->cbBitsMask); /* BitsMask (variable) */
|
||||
Stream_Write(s, iconInfo->bitsMask, iconInfo->cbBitsMask); /* BitsMask (variable) */
|
||||
|
||||
if (iconInfo->bpp <= 8)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user