From e3da19b280174c75d00ef75ba350ea5dfd5afc9f Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 2 Apr 2026 20:14:47 +0000 Subject: [PATCH 1/4] RDKEMW-16593: Fix for Increase in "dispatchThread mfr_util launched" pdri version Signed-off-by: yuvaramachandran_gurusamy --- mfr-utils/sys_mfr_utils.c | 51 +++++++++++++-------------------------- 1 file changed, 17 insertions(+), 34 deletions(-) diff --git a/mfr-utils/sys_mfr_utils.c b/mfr-utils/sys_mfr_utils.c index b9bfce8..d25eb3f 100644 --- a/mfr-utils/sys_mfr_utils.c +++ b/mfr-utils/sys_mfr_utils.c @@ -78,8 +78,8 @@ int validateParams(const char* param) { int main(int argc, char *argv[]) { - int paramIndex = 0; + char *mfrReadBuf = NULL; if (argc != 2) { displayHelp(); @@ -111,16 +111,6 @@ int main(int argc, char *argv[]) IARM_Bus_Connect(); IARM_Malloc(IARM_MEMTYPE_PROCESSLOCAL, sizeof(IARM_Bus_MFRLib_GetSerializedData_Param_t), (void**)¶m); - fflush(stdout); // ensure buffer is flushed - // restore original stdout - if (dup2(fp_old, fileno(stdout)) == -1) { - printf("dup2() failed to restore stdout\n"); - close(fp_old); - IARM_Free(IARM_MEMTYPE_PROCESSLOCAL, param); - return -1; - } - close(fp_old); - param->type = mfr_args[paramIndex];; ret = IARM_Bus_Call(IARM_BUS_MFRLIB_NAME, @@ -128,32 +118,17 @@ int main(int argc, char *argv[]) (void *)param, sizeof(IARM_Bus_MFRLib_GetSerializedData_Param_t)); - if(ret != IARM_RESULT_SUCCESS) - { - printf("Call failed for %s: error code:%d\n", mfr_args_str[paramIndex], ret); - } - else + if(IARM_RESULT_SUCCESS == ret) { int len = param->bufLen + 1; - char *pTmpStr = (char *)malloc(len); - memset(pTmpStr,0,len); - memcpy(pTmpStr,param->buffer,param->bufLen); - printf("%s\n", pTmpStr); - free(pTmpStr); + mfrReadBuf = (char *)malloc(len); + if(NULL != mfrReadBuf) { + memset(mfrReadBuf,0,len); + memcpy(mfrReadBuf,param->buffer,param->bufLen); + } } IARM_Free(IARM_MEMTYPE_PROCESSLOCAL,param); - fp_old = dup(1); // preserve the original stdout - if(fp_old == -1) { - printf("dup() failed to preserve stdout\n"); - return -1; - } - if(freopen ("/dev/null", "w", stdout) == NULL){ - printf("freopen() failed to redirect stdout\n"); - close(fp_old); - return -1; - } - IARM_Bus_Disconnect(); IARM_Bus_Term(); @@ -166,6 +141,14 @@ int main(int argc, char *argv[]) } close(fp_old); - return 0; -} + if ( NULL == mfrReadBuf) { + printf("Call failed for %s: error code:%d\n", mfr_args_str[paramIndex], ret); + } + else { + printf("%s\n", mfrReadBuf); + free(mfrReadBuf); + mfrReadBuf = NULL; + } + return 0; +} \ No newline at end of file From 91b827c67533261c6578011bc734678ee09d87f1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 3 Apr 2026 07:23:35 +0000 Subject: [PATCH 2/4] RDKEMW-16593: Handle malloc failure and fix memory leak on dup2 failure path Agent-Logs-Url: https://github.com/rdkcentral/sys_mon_tools/sessions/08e6b781-56b8-42c5-b5ea-08fa82158dcd Co-authored-by: yuvaramachandran-gurusamy <123441336+yuvaramachandran-gurusamy@users.noreply.github.com> --- mfr-utils/sys_mfr_utils.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mfr-utils/sys_mfr_utils.c b/mfr-utils/sys_mfr_utils.c index d25eb3f..42a0eb3 100644 --- a/mfr-utils/sys_mfr_utils.c +++ b/mfr-utils/sys_mfr_utils.c @@ -80,6 +80,7 @@ int main(int argc, char *argv[]) { int paramIndex = 0; char *mfrReadBuf = NULL; + int oom_error = 0; if (argc != 2) { displayHelp(); @@ -125,6 +126,8 @@ int main(int argc, char *argv[]) if(NULL != mfrReadBuf) { memset(mfrReadBuf,0,len); memcpy(mfrReadBuf,param->buffer,param->bufLen); + } else { + oom_error = 1; } } IARM_Free(IARM_MEMTYPE_PROCESSLOCAL,param); @@ -137,10 +140,16 @@ int main(int argc, char *argv[]) if (dup2(fp_old, fileno(stdout)) == -1) { printf("dup2() failed to restore stdout\n"); close(fp_old); + free(mfrReadBuf); return -1; } close(fp_old); + if (oom_error) { + printf("malloc() failed: out of memory\n"); + return -1; + } + if ( NULL == mfrReadBuf) { printf("Call failed for %s: error code:%d\n", mfr_args_str[paramIndex], ret); } From 61bda8d7778338ac990bb0dc23d3f27b63b5d3bc Mon Sep 17 00:00:00 2001 From: Yuvaramachandran Gurusamy <123441336+yuvaramachandran-gurusamy@users.noreply.github.com> Date: Fri, 3 Apr 2026 12:57:26 +0530 Subject: [PATCH 3/4] Update sys_mfr_utils.c --- mfr-utils/sys_mfr_utils.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mfr-utils/sys_mfr_utils.c b/mfr-utils/sys_mfr_utils.c index 42a0eb3..14e4b1c 100644 --- a/mfr-utils/sys_mfr_utils.c +++ b/mfr-utils/sys_mfr_utils.c @@ -140,7 +140,9 @@ int main(int argc, char *argv[]) if (dup2(fp_old, fileno(stdout)) == -1) { printf("dup2() failed to restore stdout\n"); close(fp_old); - free(mfrReadBuf); + if (mfrReadBuf) { + free(mfrReadBuf); + } return -1; } close(fp_old); @@ -160,4 +162,4 @@ int main(int argc, char *argv[]) } return 0; -} \ No newline at end of file +} From 2d4c27e624abc8d7e651fff63d913955f3de741e Mon Sep 17 00:00:00 2001 From: Yuvaramachandran Gurusamy <123441336+yuvaramachandran-gurusamy@users.noreply.github.com> Date: Fri, 3 Apr 2026 13:02:01 +0530 Subject: [PATCH 4/4] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- mfr-utils/sys_mfr_utils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mfr-utils/sys_mfr_utils.c b/mfr-utils/sys_mfr_utils.c index 14e4b1c..b5d57ed 100644 --- a/mfr-utils/sys_mfr_utils.c +++ b/mfr-utils/sys_mfr_utils.c @@ -154,6 +154,7 @@ int main(int argc, char *argv[]) if ( NULL == mfrReadBuf) { printf("Call failed for %s: error code:%d\n", mfr_args_str[paramIndex], ret); + return -1; } else { printf("%s\n", mfrReadBuf);