[warnings,api] fix -Wunused-result

With marking publid API [[nodiscard]] some problematic error checks in
the core library were uncovered. This commit addresses these
shortcomings.
This commit is contained in:
Armin Novak
2026-02-16 10:57:57 +01:00
parent 20a24fe36e
commit df64d00a97
44 changed files with 479 additions and 291 deletions

View File

@@ -864,7 +864,7 @@ UINT freerdp_channels_disconnect(rdpChannels* channels, freerdp* instance)
if (!channels->connected)
return 0;
(void)freerdp_channels_check_fds(channels, instance);
freerdp_channels_check_fds(channels, instance);
/* tell all libraries we are shutting down */
for (int index = 0; index < channels->clientDataCount; index++)
@@ -894,7 +894,7 @@ UINT freerdp_channels_disconnect(rdpChannels* channels, freerdp* instance)
channels->connected = FALSE;
/* Flush pending messages */
(void)freerdp_channels_check_fds(channels, instance);
freerdp_channels_check_fds(channels, instance);
return error;
}
@@ -907,7 +907,7 @@ void freerdp_channels_close(rdpChannels* channels, freerdp* instance)
WINPR_ASSERT(instance);
MessageQueue_PostQuit(channels->queue, 0);
(void)freerdp_channels_check_fds(channels, instance);
freerdp_channels_check_fds(channels, instance);
/* tell all libraries we are shutting down */
for (int index = 0; index < channels->clientDataCount; index++)

View File

@@ -113,7 +113,8 @@ static int freerdp_connect_begin(freerdp* instance)
if (!freerdp_settings_set_default_order_support(settings))
return -1;
freerdp_add_signal_cleanup_handler(instance->context, sig_abort_connect);
if (!freerdp_add_signal_cleanup_handler(instance->context, sig_abort_connect))
return -1;
IFCALLRET(instance->PreConnect, status, instance);
instance->ConnectionCallbackState = CLIENT_STATE_PRECONNECT_PASSED;

View File

@@ -1791,8 +1791,8 @@ BOOL gcc_read_server_security_data(wStream* s, rdpMcs* mcs)
}
return TRUE;
fail:
(void)freerdp_settings_set_pointer_len(settings, FreeRDP_ServerRandom, NULL, 0);
(void)freerdp_settings_set_pointer_len(settings, FreeRDP_ServerCertificate, NULL, 0);
freerdp_settings_set_pointer_len(settings, FreeRDP_ServerRandom, NULL, 0);
freerdp_settings_set_pointer_len(settings, FreeRDP_ServerCertificate, NULL, 0);
return FALSE;
}

View File

@@ -644,7 +644,7 @@ static BOOL rdp_read_info_string(rdpSettings* settings, FreeRDP_Settings_Keys_St
if (terminator.w != L'\0')
{
WLog_ERR(TAG, "protocol error: Domain must be null terminated");
(void)freerdp_settings_set_string(settings, id, NULL);
freerdp_settings_set_string(settings, id, NULL);
return FALSE;
}

View File

@@ -449,13 +449,13 @@ static BOOL mcs_read_domain_parameters(wStream* s, DomainParameters* domainParam
static BOOL mcs_write_domain_parameters(wLog* log, wStream* s, DomainParameters* domainParameters)
{
BOOL rc = FALSE;
size_t length = 0;
wStream* tmps = NULL;
if (!s || !domainParameters)
return FALSE;
tmps = Stream_New(NULL, Stream_Capacity(s));
wStream* tmps = Stream_New(NULL, Stream_Capacity(s));
if (!tmps)
{
@@ -463,19 +463,31 @@ static BOOL mcs_write_domain_parameters(wLog* log, wStream* s, DomainParameters*
return FALSE;
}
ber_write_integer(tmps, domainParameters->maxChannelIds);
ber_write_integer(tmps, domainParameters->maxUserIds);
ber_write_integer(tmps, domainParameters->maxTokenIds);
ber_write_integer(tmps, domainParameters->numPriorities);
ber_write_integer(tmps, domainParameters->minThroughput);
ber_write_integer(tmps, domainParameters->maxHeight);
ber_write_integer(tmps, domainParameters->maxMCSPDUsize);
ber_write_integer(tmps, domainParameters->protocolVersion);
if (!ber_write_integer(tmps, domainParameters->maxChannelIds))
goto fail;
if (!ber_write_integer(tmps, domainParameters->maxUserIds))
goto fail;
if (!ber_write_integer(tmps, domainParameters->maxTokenIds))
goto fail;
if (!ber_write_integer(tmps, domainParameters->numPriorities))
goto fail;
if (!ber_write_integer(tmps, domainParameters->minThroughput))
goto fail;
if (!ber_write_integer(tmps, domainParameters->maxHeight))
goto fail;
if (!ber_write_integer(tmps, domainParameters->maxMCSPDUsize))
goto fail;
if (!ber_write_integer(tmps, domainParameters->protocolVersion))
goto fail;
length = Stream_GetPosition(tmps);
ber_write_sequence_tag(s, length);
if (!ber_write_sequence_tag(s, length))
goto fail;
Stream_Write(s, Stream_Buffer(tmps), length);
rc = TRUE;
fail:
Stream_Free(tmps, TRUE);
return TRUE;
return rc;
}
#ifdef DEBUG_MCS
@@ -738,9 +750,11 @@ BOOL mcs_write_connect_initial(wStream* s, rdpMcs* mcs, wStream* userData)
}
/* callingDomainSelector (OCTET_STRING) */
ber_write_octet_string(tmps, callingDomainSelector, sizeof(callingDomainSelector));
if (!ber_write_octet_string(tmps, callingDomainSelector, sizeof(callingDomainSelector)))
goto out;
/* calledDomainSelector (OCTET_STRING) */
ber_write_octet_string(tmps, calledDomainSelector, sizeof(calledDomainSelector));
if (!ber_write_octet_string(tmps, calledDomainSelector, sizeof(calledDomainSelector)))
goto out;
/* upwardFlag (BOOLEAN) */
ber_write_BOOL(tmps, TRUE);
@@ -757,7 +771,8 @@ BOOL mcs_write_connect_initial(wStream* s, rdpMcs* mcs, wStream* userData)
goto out;
/* userData (OCTET_STRING) */
ber_write_octet_string(tmps, Stream_Buffer(userData), Stream_GetPosition(userData));
if (!ber_write_octet_string(tmps, Stream_Buffer(userData), Stream_GetPosition(userData)))
goto out;
length = Stream_GetPosition(tmps);
/* Connect-Initial (APPLICATION 101, IMPLICIT SEQUENCE) */
ber_write_application_tag(s, MCS_TYPE_CONNECT_INITIAL, length);
@@ -796,13 +811,15 @@ BOOL mcs_write_connect_response(wStream* s, rdpMcs* mcs, wStream* userData)
}
ber_write_enumerated(tmps, 0, MCS_Result_enum_length);
ber_write_integer(tmps, 0); /* calledConnectId */
if (!ber_write_integer(tmps, 0)) /* calledConnectId */
goto out;
if (!mcs_write_domain_parameters(mcs->log, tmps, &(mcs->domainParameters)))
goto out;
/* userData (OCTET_STRING) */
ber_write_octet_string(tmps, Stream_Buffer(userData), Stream_GetPosition(userData));
if (!ber_write_octet_string(tmps, Stream_Buffer(userData), Stream_GetPosition(userData)))
goto out;
length = Stream_GetPosition(tmps);
ber_write_application_tag(s, MCS_TYPE_CONNECT_RESPONSE, length);
Stream_Write(s, Stream_Buffer(tmps), length);
@@ -1048,6 +1065,7 @@ BOOL mcs_recv_erect_domain_request(rdpMcs* mcs, wStream* s)
BOOL mcs_send_erect_domain_request(rdpMcs* mcs)
{
int status = -1;
UINT16 length = 12;
if (!mcs)
@@ -1062,12 +1080,15 @@ BOOL mcs_send_erect_domain_request(rdpMcs* mcs)
}
mcs_write_domain_mcspdu_header(s, DomainMCSPDU_ErectDomainRequest, length, 0);
per_write_integer(s, 0); /* subHeight (INTEGER) */
per_write_integer(s, 0); /* subInterval (INTEGER) */
if (!per_write_integer(s, 0)) /* subHeight (INTEGER) */
goto out;
if (!per_write_integer(s, 0)) /* subInterval (INTEGER) */
goto out;
Stream_SealLength(s);
rdpTransport* transport = freerdp_get_transport(mcs->context);
const int status = transport_write(transport, s);
status = transport_write(transport, s);
out:
Stream_Free(s, TRUE);
return (status < 0) ? FALSE : TRUE;
}
@@ -1152,6 +1173,7 @@ BOOL mcs_recv_attach_user_confirm(rdpMcs* mcs, wStream* s)
BOOL mcs_send_attach_user_confirm(rdpMcs* mcs)
{
int status = -1;
UINT16 length = 11;
if (!mcs)
@@ -1166,13 +1188,17 @@ BOOL mcs_send_attach_user_confirm(rdpMcs* mcs)
}
mcs->userId = mcs->baseChannelId++;
mcs_write_domain_mcspdu_header(s, DomainMCSPDU_AttachUserConfirm, length, 2);
per_write_enumerated(s, 0, MCS_Result_enum_length); /* result */
per_write_integer16(s, mcs->userId, MCS_BASE_CHANNEL_ID); /* initiator (UserId) */
if (!mcs_write_domain_mcspdu_header(s, DomainMCSPDU_AttachUserConfirm, length, 2))
goto out;
if (!per_write_enumerated(s, 0, MCS_Result_enum_length)) /* result */
goto out;
if (!per_write_integer16(s, mcs->userId, MCS_BASE_CHANNEL_ID)) /* initiator (UserId) */
goto out;
Stream_SealLength(s);
rdpTransport* transport = freerdp_get_transport(mcs->context);
const int status = transport_write(transport, s);
status = transport_write(transport, s);
out:
Stream_Free(s, TRUE);
return (status < 0) ? FALSE : TRUE;
}
@@ -1223,6 +1249,7 @@ BOOL mcs_recv_channel_join_request(rdpMcs* mcs, const rdpSettings* settings, wSt
BOOL mcs_send_channel_join_request(rdpMcs* mcs, UINT16 channelId)
{
int status = -1;
UINT16 length = 12;
WINPR_ASSERT(mcs);
@@ -1235,13 +1262,18 @@ BOOL mcs_send_channel_join_request(rdpMcs* mcs, UINT16 channelId)
return FALSE;
}
mcs_write_domain_mcspdu_header(s, DomainMCSPDU_ChannelJoinRequest, length, 0);
per_write_integer16(s, mcs->userId, MCS_BASE_CHANNEL_ID);
per_write_integer16(s, channelId, 0);
if (!mcs_write_domain_mcspdu_header(s, DomainMCSPDU_ChannelJoinRequest, length, 0))
goto out;
if (!per_write_integer16(s, mcs->userId, MCS_BASE_CHANNEL_ID))
goto out;
if (!per_write_integer16(s, channelId, 0))
goto out;
Stream_SealLength(s);
rdpTransport* transport = freerdp_get_transport(mcs->context);
const int status = transport_write(transport, s);
status = transport_write(transport, s);
out:
Stream_Free(s, TRUE);
return (status < 0) ? FALSE : TRUE;
}

View File

@@ -328,14 +328,16 @@ const char* utils_is_vsock(const char* hostname)
static BOOL remove_rdpdr_type(rdpSettings* settings, UINT32 type)
{
BOOL rc = TRUE;
RDPDR_DEVICE* printer = NULL;
do
{
printer = freerdp_device_collection_find_type(settings, type);
freerdp_device_collection_del(settings, printer);
if (!freerdp_device_collection_del(settings, printer))
rc = FALSE;
freerdp_device_free(printer);
} while (printer);
return TRUE;
return rc;
}
static BOOL disable_clipboard(rdpSettings* settings)