From 2b8ecce7a957a1f12b259ca05fdbb85cbcc9a899 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 3 Mar 2026 12:45:17 +0100 Subject: [PATCH] [channels,rdpecam] fix return checks --- channels/rdpecam/client/camera_device_enum_main.c | 7 ++++++- channels/rdpecam/client/v4l/camera_v4l.c | 11 +++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/channels/rdpecam/client/camera_device_enum_main.c b/channels/rdpecam/client/camera_device_enum_main.c index 111863f75..85f67b5f8 100644 --- a/channels/rdpecam/client/camera_device_enum_main.c +++ b/channels/rdpecam/client/camera_device_enum_main.c @@ -352,7 +352,12 @@ static UINT ecam_plugin_initialize(IWTSPlugin* pPlugin, IWTSVirtualChannelManage return CHANNEL_RC_NO_MEMORY; } - HashTable_SetupForStringData(ecam->devices, FALSE); + if (!HashTable_SetupForStringData(ecam->devices, FALSE)) + { + HashTable_Free(ecam->devices); + ecam->devices = nullptr; + return ERROR_INTERNAL_ERROR; + } wObject* obj = HashTable_ValueObject(ecam->devices); WINPR_ASSERT(obj); diff --git a/channels/rdpecam/client/v4l/camera_v4l.c b/channels/rdpecam/client/v4l/camera_v4l.c index 034516b90..5494c233b 100644 --- a/channels/rdpecam/client/v4l/camera_v4l.c +++ b/channels/rdpecam/client/v4l/camera_v4l.c @@ -791,7 +791,7 @@ static CAM_ERROR_CODE cam_v4l_free(ICamHal* ihal) FREERDP_ENTRY_POINT(UINT VCAPITYPE v4l_freerdp_rdpecam_client_subsystem_entry( PFREERDP_CAMERA_HAL_ENTRY_POINTS pEntryPoints)) { - UINT ret = CHANNEL_RC_OK; + UINT ret = ERROR_INTERNAL_ERROR; WINPR_ASSERT(pEntryPoints); CamV4lHal* hal = (CamV4lHal*)calloc(1, sizeof(CamV4lHal)); @@ -809,18 +809,17 @@ FREERDP_ENTRY_POINT(UINT VCAPITYPE v4l_freerdp_rdpecam_client_subsystem_entry( hal->streams = HashTable_New(FALSE); if (!hal->streams) - { - ret = CHANNEL_RC_NO_MEMORY; goto error; - } - HashTable_SetupForStringData(hal->streams, FALSE); + if (!HashTable_SetupForStringData(hal->streams, FALSE)) + goto error; wObject* obj = HashTable_ValueObject(hal->streams); WINPR_ASSERT(obj); obj->fnObjectFree = cam_v4l_stream_free; - if ((ret = pEntryPoints->pRegisterCameraHal(pEntryPoints->plugin, &hal->iHal))) + ret = pEntryPoints->pRegisterCameraHal(pEntryPoints->plugin, &hal->iHal); + if (ret != CHANNEL_RC_OK) { WLog_ERR(TAG, "RegisterCameraHal failed with error %" PRIu32 "", ret); goto error;