From 8210ee77db085bf65a465b7294b5372a43dcb6e9 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 8 Nov 2022 11:54:03 +0100 Subject: [PATCH] Fixed return of rdp_client_transition_to_state Use BOOL to just indicate success/failure and actually check return of functions called. --- libfreerdp/core/activation.c | 4 ++-- libfreerdp/core/connection.c | 15 ++++++++------- libfreerdp/core/connection.h | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/libfreerdp/core/activation.c b/libfreerdp/core/activation.c index 9fd07b07d..21b854671 100644 --- a/libfreerdp/core/activation.c +++ b/libfreerdp/core/activation.c @@ -630,8 +630,8 @@ BOOL rdp_recv_deactivate_all(rdpRdp* rdp, wStream* s) } while (0); } - return rdp_client_transition_to_state( - rdp, CONNECTION_STATE_CAPABILITIES_EXCHANGE_DEMAND_ACTIVE) == 0; + return rdp_client_transition_to_state(rdp, + CONNECTION_STATE_CAPABILITIES_EXCHANGE_DEMAND_ACTIVE); } BOOL rdp_send_deactivate_all(rdpRdp* rdp) diff --git a/libfreerdp/core/connection.c b/libfreerdp/core/connection.c index 2d7f33df1..6c734e522 100644 --- a/libfreerdp/core/connection.c +++ b/libfreerdp/core/connection.c @@ -1223,13 +1223,13 @@ int rdp_client_connect_finalize(rdpRdp* rdp) return 0; } -int rdp_client_transition_to_state(rdpRdp* rdp, CONNECTION_STATE state) +BOOL rdp_client_transition_to_state(rdpRdp* rdp, CONNECTION_STATE state) { - int status = 0; const char* name = rdp_state_string(state); WLog_DBG(TAG, "%s %s --> %s", __FUNCTION__, rdp_get_state_string(rdp), name); - rdp_set_state(rdp, state); + if (!rdp_set_state(rdp, state)) + return FALSE; switch (state) { @@ -1239,12 +1239,13 @@ int rdp_client_transition_to_state(rdpRdp* rdp, CONNECTION_STATE state) case CONNECTION_STATE_FINALIZATION_PERSISTENT_KEY_LIST: case CONNECTION_STATE_FINALIZATION_FONT_LIST: update_reset_state(rdp->update); - rdp_finalize_reset_flags(rdp, FALSE); + if (!rdp_finalize_reset_flags(rdp, FALSE)) + return FALSE; break; case CONNECTION_STATE_ACTIVE: { - ActivatedEventArgs activatedEvent; + ActivatedEventArgs activatedEvent = { 0 }; rdpContext* context = rdp->context; EventArgsInit(&activatedEvent, "libfreerdp"); activatedEvent.firstActivation = @@ -1259,7 +1260,7 @@ int rdp_client_transition_to_state(rdpRdp* rdp, CONNECTION_STATE state) } { - ConnectionStateChangeEventArgs stateEvent; + ConnectionStateChangeEventArgs stateEvent = { 0 }; rdpContext* context = rdp->context; EventArgsInit(&stateEvent, "libfreerdp"); stateEvent.state = rdp_get_state(rdp); @@ -1267,7 +1268,7 @@ int rdp_client_transition_to_state(rdpRdp* rdp, CONNECTION_STATE state) PubSub_OnConnectionStateChange(rdp->pubSub, context, &stateEvent); } - return status; + return TRUE; } BOOL rdp_server_accept_nego(rdpRdp* rdp, wStream* s) diff --git a/libfreerdp/core/connection.h b/libfreerdp/core/connection.h index 271d20c21..4b8205250 100644 --- a/libfreerdp/core/connection.h +++ b/libfreerdp/core/connection.h @@ -47,7 +47,7 @@ FREERDP_LOCAL BOOL rdp_client_connect_auto_detect(rdpRdp* rdp, wStream* s); FREERDP_LOCAL int rdp_client_connect_license(rdpRdp* rdp, wStream* s); FREERDP_LOCAL int rdp_client_connect_demand_active(rdpRdp* rdp, wStream* s); FREERDP_LOCAL int rdp_client_connect_confirm_active(rdpRdp* rdp, wStream* s); -FREERDP_LOCAL int rdp_client_transition_to_state(rdpRdp* rdp, CONNECTION_STATE state); +FREERDP_LOCAL BOOL rdp_client_transition_to_state(rdpRdp* rdp, CONNECTION_STATE state); FREERDP_LOCAL CONNECTION_STATE rdp_get_state(const rdpRdp* rdp); FREERDP_LOCAL const char* rdp_state_string(CONNECTION_STATE state);