From cf230aaf7077d5b6cbe1d12bbc282072f35b1ca5 Mon Sep 17 00:00:00 2001 From: Rajeev Katta Date: Sat, 29 Nov 2025 15:23:07 -0500 Subject: [PATCH 1/2] rtmessage: fix coverity RESOURCE_LEAK in rtConnection_CreateInternal - Coverity issue ID: 111 (line 555) - Fix generated by RDKDevPilot AI Bot - Add cleanup for mutexes, condition variable, and buffers on allocation failures --- src/rtmessage/rtConnection.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/rtmessage/rtConnection.c b/src/rtmessage/rtConnection.c index c2377a2c..7d6a32b3 100644 --- a/src/rtmessage/rtConnection.c +++ b/src/rtmessage/rtConnection.c @@ -549,10 +549,25 @@ rtConnection_CreateInternal(rtConnection* con, char const* application_name, cha c->send_buffer_in_use = 0; c->send_buffer = (uint8_t *) rt_try_malloc(RTMSG_SEND_BUFFER_SIZE); if(!c->send_buffer) + { + pthread_mutex_destroy(&c->mutex); + pthread_mutex_destroy(&c->callback_message_mutex); + pthread_mutex_destroy(&c->reconnect_mutex); + pthread_cond_destroy(&c->callback_message_cond); + free(c); return rtErrorFromErrno(ENOMEM); + } c->recv_buffer = (uint8_t *) rt_try_malloc(RTMSG_SEND_BUFFER_SIZE); if(!c->recv_buffer) + { + free(c->send_buffer); + pthread_mutex_destroy(&c->mutex); + pthread_mutex_destroy(&c->callback_message_mutex); + pthread_mutex_destroy(&c->reconnect_mutex); + pthread_cond_destroy(&c->callback_message_cond); + free(c); return rtErrorFromErrno(ENOMEM); + } c->recv_buffer_capacity = RTMSG_SEND_BUFFER_SIZE; c->sequence_number = 1; #ifdef C11_ATOMICS_SUPPORTED From 8165c75f303d26d64dfb82a78d9cf4cf867505cb Mon Sep 17 00:00:00 2001 From: Rajeev Katta Date: Sat, 29 Nov 2025 15:30:24 -0500 Subject: [PATCH 2/2] rtmessage: fix cleanup order to match existing pattern Address Copilot review feedback: - Destroy condition variable between callback_message_mutex and reconnect_mutex - Matches existing cleanup pattern at lines 770-773 --- src/rtmessage/rtConnection.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rtmessage/rtConnection.c b/src/rtmessage/rtConnection.c index 7d6a32b3..8fddd0d6 100644 --- a/src/rtmessage/rtConnection.c +++ b/src/rtmessage/rtConnection.c @@ -552,8 +552,8 @@ rtConnection_CreateInternal(rtConnection* con, char const* application_name, cha { pthread_mutex_destroy(&c->mutex); pthread_mutex_destroy(&c->callback_message_mutex); - pthread_mutex_destroy(&c->reconnect_mutex); pthread_cond_destroy(&c->callback_message_cond); + pthread_mutex_destroy(&c->reconnect_mutex); free(c); return rtErrorFromErrno(ENOMEM); } @@ -563,8 +563,8 @@ rtConnection_CreateInternal(rtConnection* con, char const* application_name, cha free(c->send_buffer); pthread_mutex_destroy(&c->mutex); pthread_mutex_destroy(&c->callback_message_mutex); - pthread_mutex_destroy(&c->reconnect_mutex); pthread_cond_destroy(&c->callback_message_cond); + pthread_mutex_destroy(&c->reconnect_mutex); free(c); return rtErrorFromErrno(ENOMEM); }