@@ -114,11 +114,11 @@ void processIssueTypeEvent(data_buf *rbuf)
114114 }
115115
116116 }
117- if ( cmdMap )
118- {
117+ if ( cmdMap )
118+ {
119119 free (cmdMap );
120- cmdMap = NULL ;
121- }
120+ cmdMap = NULL ;
121+ }
122122 }
123123 }
124124
@@ -155,6 +155,7 @@ static void processIssueType(data_buf *rbuf)
155155 if (dynamicprofiledata == NULL )
156156 {
157157 RDK_LOG (RDK_LOG_INFO , LOG_REMDEBUG , "[%s:%d]: Dynamic Profie Info not found, Download RDM package... \n" , __FUNCTION__ , __LINE__ );
158+ free (pIssueNode ); // free issue node struct when dynamic profile not found
158159 }
159160 else
160161 {
@@ -164,6 +165,17 @@ static void processIssueType(data_buf *rbuf)
164165 if (staticprofiledata == NULL )
165166 {
166167 RDK_LOG (RDK_LOG_INFO , LOG_REMDEBUG , "[%s:%d]: Static Command Info not found for IssueType!!! \n" , __FUNCTION__ , __LINE__ );
168+ // Free dynamicprofiledata since we can't proceed
169+ if (dynamicprofiledata -> rfcvalue != NULL )
170+ {
171+ free (dynamicprofiledata -> rfcvalue );
172+ }
173+ if (dynamicprofiledata -> command != NULL )
174+ {
175+ free (dynamicprofiledata -> command );
176+ }
177+ free (dynamicprofiledata );
178+ free (pIssueNode ); // free issue node struct
167179 }
168180 else
169181 {
@@ -173,35 +185,54 @@ static void processIssueType(data_buf *rbuf)
173185 size_t dynamicstrlen = strlen (dynamicprofiledata -> command );
174186 if (staticstrlen > 0 && staticprofiledata -> command [staticstrlen - 1 ] == '"' ) {
175187 staticprofiledata -> command [staticstrlen - 1 ] = '\0' ;
188+ staticstrlen -- ; // Update length after removing trailing quote
176189 }
177190 if (dynamicprofiledata -> command [0 ] == '"' ) {
178191 dynamicprofiledata -> command [0 ] = COMMAND_DELIM ;
179192 }
180193 RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: Static Profile Commands: %s, Dynamic Profile Commands: %s\n" , __FUNCTION__ , __LINE__ , staticprofiledata -> command , dynamicprofiledata -> command );
181194
182- size_t appendstrlen = (( staticstrlen - 1 ) + dynamicstrlen + 1 );
195+ size_t appendstrlen = (staticstrlen + dynamicstrlen + 1 );
183196 char * appendcommandstr = (char * )realloc (staticprofiledata -> command , appendstrlen );
184197 if (appendcommandstr == NULL ) {
185- RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: Memory Allocation Failed... \n" , __FUNCTION__ , __LINE__ );
198+ RDK_LOG (RDK_LOG_ERROR , LOG_REMDEBUG , "[%s:%d]: Memory Allocation Failed... \n" , __FUNCTION__ , __LINE__ );
199+ free (pIssueNode ); // free issue node struct on realloc failure
200+ }
201+ else
202+ {
203+ strcat (appendcommandstr , dynamicprofiledata -> command );
204+ staticprofiledata -> command = appendcommandstr ;
205+ RDK_LOG (RDK_LOG_INFO , LOG_REMDEBUG , "[%s:%d]: Updated command after append from dynamic and static profile: %s \n" , __FUNCTION__ , __LINE__ , staticprofiledata -> command );
206+ RDK_LOG (RDK_LOG_DEBUG ,LOG_REMDEBUG ,"[%s:%d]: Executing Commands in Runtime Service... \n" ,__FUNCTION__ ,__LINE__ );
207+ checkIssueNodeInfo (pIssueNode , NULL , rbuf , false, staticprofiledata );
208+ // pIssueNode is NOT freed here - checkIssueNodeInfo frees Node and subNode members only
209+ free (pIssueNode ); // free issue node struct after command execution
186210 }
187- strcat (appendcommandstr , dynamicprofiledata -> command );
188- staticprofiledata -> command = appendcommandstr ;
189- RDK_LOG (RDK_LOG_INFO , LOG_REMDEBUG , "[%s:%d]: Updated command after append from dynamic and static profile: %s \n" , __FUNCTION__ , __LINE__ , staticprofiledata -> command );
190- RDK_LOG (RDK_LOG_DEBUG ,LOG_REMDEBUG ,"[%s:%d]: Executing Commands in Runtime Service... \n" ,__FUNCTION__ ,__LINE__ );
191- checkIssueNodeInfo (pIssueNode , NULL , rbuf , false, staticprofiledata );
211+ // Free dynamicprofiledata after use
212+ if (dynamicprofiledata -> rfcvalue != NULL )
213+ {
214+ free (dynamicprofiledata -> rfcvalue );
215+ }
216+ if (dynamicprofiledata -> command != NULL )
217+ {
218+ free (dynamicprofiledata -> command );
219+ }
220+ free (dynamicprofiledata );
192221 }
193222 }
194223 }
195224 else if (rbuf -> inDynamic )
196225 {
197226 RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: Checking if Issue marked inDynamic... \n" , __FUNCTION__ , __LINE__ );
198227 processIssueTypeInDynamicProfile (rbuf , pIssueNode );
228+ free (pIssueNode ); // free issue node struct
199229 }
200230 else
201231 {
202232 RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: Issue not marked as inDynamic... \n" , __FUNCTION__ , __LINE__ );
203233 RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: Checking Issue from Static... \n" , __FUNCTION__ , __LINE__ );
204234 processIssueTypeInStaticProfile (rbuf , pIssueNode );
235+ free (pIssueNode ); // free issue node struct
205236 }
206237 //CID-336989: Resource leak
207238 }
@@ -303,6 +334,8 @@ static void processIssueTypeInStaticProfile(data_buf *rbuf, issueNodeData *pIssu
303334 { // Static Profile JSON Parsing or Read Fail
304335 RDK_LOG (RDK_LOG_ERROR , LOG_REMDEBUG , "[%s:%d]: Static Profile Parse/Read failed... %s\n" , __FUNCTION__ , __LINE__ , RRD_JSON_FILE );
305336 processIssueTypeInInstalledPackage (rbuf , pIssueNode );
337+ RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: ...Exiting...\n" , __FUNCTION__ , __LINE__ );
338+ return ;
306339 }
307340 RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: Static Profile Parse And Read Success... %s\n" , __FUNCTION__ , __LINE__ , RRD_JSON_FILE );
308341 RDK_LOG (RDK_LOG_DEBUG , LOG_REMDEBUG , "[%s:%d]: Check if Issue in Parsed Static JSON... %s\n" , __FUNCTION__ , __LINE__ , RRD_JSON_FILE );
0 commit comments