From 49664e191b64da9c2db471b06d56a561ab05aab6 Mon Sep 17 00:00:00 2001 From: Rajeev Katta Date: Mon, 1 Dec 2025 16:23:03 -0500 Subject: [PATCH 1/2] test: fix coverity RESOURCE_LEAK in rbusTestProvider Fixes Coverity CID 106, 107 Generated by RDKDevPilot AI Bot (v2) Root Cause: Resource leak when createTableNode/createPropertyNode fail. rowNode not freed on error. Changes: - Add error checking in addTable2RowHandler (CID 106) - Add error checking in addTable1RowHandler (CID 107) - Cleanup rowNode on failure Supersedes: PR #391 Bot Score: 95/100 --- test/rbus/provider/rbusTestProvider.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/test/rbus/provider/rbusTestProvider.c b/test/rbus/provider/rbusTestProvider.c index 0cf5f495..ec9179d1 100644 --- a/test/rbus/provider/rbusTestProvider.c +++ b/test/rbus/provider/rbusTestProvider.c @@ -384,8 +384,17 @@ rbusError_t addTable2RowHandler(TableNode* tableNode, char const* alias, uint32_ return err; /*add properties and tables to the new row object*/ - createTableNode((Node*)rowNode, "Table3", addTable3RowHandler); - createPropertyNode((Node*)rowNode, "data"); + if(!createTableNode((Node*)rowNode, "Table3", addTable3RowHandler)) + { + destroyTableRowNode(rowNode); + return RBUS_ERROR_OUT_OF_RESOURCES; + } + + if(!createPropertyNode((Node*)rowNode, "data")) + { + destroyTableRowNode(rowNode); + return RBUS_ERROR_OUT_OF_RESOURCES; + } return RBUS_ERROR_SUCCESS; } @@ -401,8 +410,17 @@ rbusError_t addTable1RowHandler(TableNode* tableNode, char const* alias, uint32_ return err; /*add properties and tables to the new row object*/ - createTableNode((Node*)rowNode, "Table2", addTable2RowHandler); - createPropertyNode((Node*)rowNode, "data"); + if(!createTableNode((Node*)rowNode, "Table2", addTable2RowHandler)) + { + destroyTableRowNode(rowNode); + return RBUS_ERROR_OUT_OF_RESOURCES; + } + + if(!createPropertyNode((Node*)rowNode, "data")) + { + destroyTableRowNode(rowNode); + return RBUS_ERROR_OUT_OF_RESOURCES; + } return RBUS_ERROR_SUCCESS; } From bc17c0a0cc355e114faafd32d90f6bd021c8f13f Mon Sep 17 00:00:00 2001 From: Rajeev Katta Date: Mon, 1 Dec 2025 16:39:04 -0500 Subject: [PATCH 2/2] fix: use correct destroyNode function The function destroyTableRowNode does not exist. Use destroyNode with cast instead. --- test/rbus/provider/rbusTestProvider.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/rbus/provider/rbusTestProvider.c b/test/rbus/provider/rbusTestProvider.c index ec9179d1..1287e2af 100644 --- a/test/rbus/provider/rbusTestProvider.c +++ b/test/rbus/provider/rbusTestProvider.c @@ -386,13 +386,13 @@ rbusError_t addTable2RowHandler(TableNode* tableNode, char const* alias, uint32_ /*add properties and tables to the new row object*/ if(!createTableNode((Node*)rowNode, "Table3", addTable3RowHandler)) { - destroyTableRowNode(rowNode); + destroyNode((Node*)rowNode); return RBUS_ERROR_OUT_OF_RESOURCES; } if(!createPropertyNode((Node*)rowNode, "data")) { - destroyTableRowNode(rowNode); + destroyNode((Node*)rowNode); return RBUS_ERROR_OUT_OF_RESOURCES; } @@ -412,13 +412,13 @@ rbusError_t addTable1RowHandler(TableNode* tableNode, char const* alias, uint32_ /*add properties and tables to the new row object*/ if(!createTableNode((Node*)rowNode, "Table2", addTable2RowHandler)) { - destroyTableRowNode(rowNode); + destroyNode((Node*)rowNode); return RBUS_ERROR_OUT_OF_RESOURCES; } if(!createPropertyNode((Node*)rowNode, "data")) { - destroyTableRowNode(rowNode); + destroyNode((Node*)rowNode); return RBUS_ERROR_OUT_OF_RESOURCES; }