Hi Zoran,

Reviewed and tested the patch.
Ack from me.

BR,

Hung Nguyen - DEK Technologies


--------------------------------------------------------------------------------
From: Zoran Milinkovic zoran.milinko...@ericsson.com
Sent: Saturday, January 14, 2017 9:04PM
To: Neelakanta Reddy
     reddy.neelaka...@oracle.com
Cc: Opensaf-devel
     opensaf-devel@lists.sourceforge.net
Subject: [devel] [PATCH 1 of 1] imm: fix memory leak in PBE [#2260]


  src/imm/immpbed/immpbe_daemon.cc |  34 ++++++++++++++++++----------------
  1 files changed, 18 insertions(+), 16 deletions(-)


Fix memory leak in PBE when admin op for resource display is invoked.
Additional indentation fix is added to the patch.

diff --git a/src/imm/immpbed/immpbe_daemon.cc b/src/imm/immpbed/immpbe_daemon.cc
--- a/src/imm/immpbed/immpbe_daemon.cc
+++ b/src/imm/immpbed/immpbe_daemon.cc
@@ -1119,9 +1119,9 @@ static void saImmOiAdminOperationCallbac
                                resparams = (SaImmAdminOperationParamsT_2 *) 
malloc(sizeof(SaImmAdminOperationParamsT_2));
                                opName=(*(SaStringT *)params[i]->paramBuffer);
                                resparams->paramName = 
strdup(SA_IMM_PARAM_ADMOP_NAME);
-                               resparams->paramType = SA_IMM_ATTR_SASTRINGT;
-                               resparams->paramBuffer = 
malloc(sizeof(SaStringT));
-                               *((SaStringT *)(resparams->paramBuffer)) = 
strdup(opName);
+                               resparams->paramType = SA_IMM_ATTR_SASTRINGT;
+                               resparams->paramBuffer = 
malloc(sizeof(SaStringT));
+                               *((SaStringT *)(resparams->paramBuffer)) = 
strdup(opName);
                                rparams[param_len -1]=resparams;
                                rparams[param_len]=NULL;
                                break;
@@ -1130,22 +1130,22 @@ static void saImmOiAdminOperationCallbac
                }
                i=0;
                while (params[i]) {
-                        if ((strcmp(params[i]->paramName, "resource"))==0){
+                       if ((strcmp(params[i]->paramName, "resource"))==0){
                                param_len++;
                                rparams = (SaImmAdminOperationParamsT_2 **) 
realloc (rparams,
                                                (param_len+1) * 
sizeof(SaImmAdminOperationParamsT_2 *));
                                resparams = (SaImmAdminOperationParamsT_2 *) 
malloc(sizeof(SaImmAdminOperationParamsT_2));
-                                res=(*(SaStringT *)params[i]->paramBuffer);
-                                resparams->paramName = strdup("resource");
-                                resparams->paramType = SA_IMM_ATTR_SASTRINGT;
-                                resparams->paramBuffer = 
malloc(sizeof(SaStringT));
-                                *((SaStringT *)(resparams->paramBuffer)) = 
strdup(res);
+                               res=(*(SaStringT *)params[i]->paramBuffer);
+                               resparams->paramName = strdup("resource");
+                               resparams->paramType = SA_IMM_ATTR_SASTRINGT;
+                               resparams->paramBuffer = 
malloc(sizeof(SaStringT));
+                               *((SaStringT *)(resparams->paramBuffer)) = 
strdup(res);
                                rparams[param_len -1]=resparams;
                                rparams[param_len]=NULL;
-                                break;
-                        }
-                        i++;
-                }
+                               break;
+                       }
+                       i++;
+               }
                
                if (opName) {
                        if ((strcmp(opName,"display")==0) || 
(strcmp(opName,"displayverbose")==0)||
@@ -1165,9 +1165,11 @@ static void saImmOiAdminOperationCallbac
                while (rparams[i]) {
                        resparams = rparams[i];
                        if(resparams->paramName)
-                                       free(resparams->paramName);
-                       if(resparams->paramBuffer)
-                                       free(resparams->paramBuffer);
+                               free(resparams->paramName);
+                       if(resparams->paramBuffer) {
+                               free(*((SaStringT *)(resparams->paramBuffer)));
+                               free(resparams->paramBuffer);
+                       }
                        free(resparams);
                        i++;
                }

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to