Please provide a proper commit message
/Hans

Skickat från min Sony Xperia™-smartphone


---- Gary Lee skrev ----

osaf/services/saf/amf/amfd/csi.cc       |  25 ++++++++++++++++++++-----
 osaf/services/saf/amf/amfd/include/sg.h |   1 -
 osaf/services/saf/amf/amfd/sgtype.cc    |   3 ++-
 osaf/services/saf/amf/amfd/si.cc        |  27 +++++++++++++++++++++++++--
 osaf/services/saf/amf/amfd/svctype.cc   |  20 ++++++++++++++++++++
 osaf/services/saf/amf/amfd/util.cc      |   4 ++--
 6 files changed, 69 insertions(+), 11 deletions(-)


diff --git a/osaf/services/saf/amf/amfd/csi.cc 
b/osaf/services/saf/amf/amfd/csi.cc
--- a/osaf/services/saf/amf/amfd/csi.cc
+++ b/osaf/services/saf/amf/amfd/csi.cc
@@ -44,6 +44,19 @@

         rc = ncs_patricia_tree_del(&csi_db, &csi->tree_node);
         osafassert(rc == NCSCC_RC_SUCCESS);
+
+       if (csi->saAmfCSIDependencies) {
+               AVD_CSI_DEPS *csi_dep;
+               AVD_CSI_DEPS *next_csi_dep;
+
+               csi_dep = csi->saAmfCSIDependencies;
+               while (csi_dep != NULL) {
+                       next_csi_dep = csi_dep->csi_dep_next;
+                       delete csi_dep;
+                       csi_dep = next_csi_dep;
+               }
+       }
+
         delete csi;
         TRACE_LEAVE2();
 }
@@ -295,21 +308,23 @@
                 } else {
                         /* Dependency Configured. Decide rank when adding it 
in si list.*/
                         unsigned int i;
-                       bool found = false;
+                       bool found;
                         AVD_CSI_DEPS *new_csi_dep = NULL;

                         for (i = 0; i < values_number; i++) {
-                               if (!found)
-                                       new_csi_dep  =  new AVD_CSI_DEPS();
+                               new_csi_dep = new AVD_CSI_DEPS();
                                 if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCSIDependencies"), 
attributes, i,
                                         &new_csi_dep->csi_dep_name_value) != 
SA_AIS_OK) {
                                         LOG_ER("Get saAmfCSIDependencies 
FAILED for '%s'", csi->name.value);
+                                       // make sure we don't leak any memory if
+                                       // saAmfCSIDependencies can't be read
+                                       delete new_csi_dep;
                                         goto done;
                                 }
                                 found = csi_add_csidep(csi,new_csi_dep);
+                               if (found == true)
+                                       delete new_csi_dep;
                         }
-                       if (found == true)
-                               free (new_csi_dep);
                 }
         } else {
                 csi->rank = 1;
diff --git a/osaf/services/saf/amf/amfd/include/sg.h 
b/osaf/services/saf/amf/amfd/include/sg.h
--- a/osaf/services/saf/amf/amfd/include/sg.h
+++ b/osaf/services/saf/amf/amfd/include/sg.h
@@ -247,7 +247,6 @@
    /******************** B.04 model 
*************************************************/
         SaNameT *saAmfSGtValidSuTypes;  /* array of DNs, size in 
number_su_type */
         SaAmfRedundancyModelT saAmfSgtRedundancyModel;
-       SaNameT *saAmfStgValidSuTypes;
         SaBoolT saAmfSgtDefAutoRepair;
         SaBoolT saAmfSgtDefAutoAdjust;
         SaTimeT saAmfSgtDefAutoAdjustProb;
diff --git a/osaf/services/saf/amf/amfd/sgtype.cc 
b/osaf/services/saf/amf/amfd/sgtype.cc
--- a/osaf/services/saf/amf/amfd/sgtype.cc
+++ b/osaf/services/saf/amf/amfd/sgtype.cc
@@ -77,7 +77,7 @@
 static void sgtype_delete(AVD_AMF_SG_TYPE *sg_type)
 {
         (void)ncs_patricia_tree_del(&sgtype_db, &sg_type->tree_node);
-       delete sg_type->saAmfStgValidSuTypes;
+       delete [] sg_type->saAmfSGtValidSuTypes;
         delete sg_type;
 }

@@ -257,6 +257,7 @@

  done:
         if (rc != 0) {
+               delete [] sgt->saAmfSGtValidSuTypes;
                 delete sgt;
                 sgt = NULL;
         }
diff --git a/osaf/services/saf/amf/amfd/si.cc b/osaf/services/saf/amf/amfd/si.cc
--- a/osaf/services/saf/amf/amfd/si.cc
+++ b/osaf/services/saf/amf/amfd/si.cc
@@ -338,6 +338,8 @@
         si->alarm_sent = false;
         si->num_dependents = 0;
         si->tol_timer_count = 0;
+       si->saAmfSIActiveWeight = NULL;
+       si->saAmfSIStandbyWeight = NULL;

         return si;
 }
@@ -377,6 +379,25 @@
         avd_sg_remove_si(si->sg_of_si, si);
         rc = ncs_patricia_tree_del(&si_db, &si->tree_node);
         osafassert(rc == NCSCC_RC_SUCCESS);
+
+       if (si->saAmfSIActiveWeight) {
+               unsigned int i = 0;
+               while (si->saAmfSIActiveWeight[i] != NULL) {
+                       delete [] si->saAmfSIActiveWeight[i];
+                       ++i;
+               }
+               delete [] si->saAmfSIActiveWeight;
+       }
+
+       if (si->saAmfSIStandbyWeight) {
+               unsigned int i = 0;
+               while (si->saAmfSIStandbyWeight[i] != NULL) {
+                       delete [] si->saAmfSIStandbyWeight[i];
+                       ++i;
+               }
+               delete [] si->saAmfSIStandbyWeight;
+       }
+
         delete si;
 }
 /**
@@ -595,22 +616,24 @@

         /* Optional, [0..*] */
         if 
(immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfSIActiveWeight"), 
attributes, &attrValuesNumber) == SA_AIS_OK) {
-               si->saAmfSIActiveWeight = new char*[attrValuesNumber];
+               si->saAmfSIActiveWeight = new char*[attrValuesNumber + 1];
                 for (i = 0; i < attrValuesNumber; i++) {
                         si->saAmfSIActiveWeight[i] =
                             StrDup(immutil_getStringAttr(attributes, 
"saAmfSIActiveWeight", i));
                 }
+               si->saAmfSIActiveWeight[i] = NULL;
         } else {
                 /*  TODO */
         }

         /* Optional, [0..*] */
         if 
(immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfSIStandbyWeight"),
 attributes, &attrValuesNumber) == SA_AIS_OK) {
-               si->saAmfSIStandbyWeight = new char*[attrValuesNumber];
+               si->saAmfSIStandbyWeight = new char*[attrValuesNumber + 1];
                 for (i = 0; i < attrValuesNumber; i++) {
                         si->saAmfSIStandbyWeight[i] =
                             StrDup(immutil_getStringAttr(attributes, 
"saAmfSIStandbyWeight", i));
                 }
+               si->saAmfSIStandbyWeight[i] = NULL;
         } else {
                 /*  TODO */
         }
diff --git a/osaf/services/saf/amf/amfd/svctype.cc 
b/osaf/services/saf/amf/amfd/svctype.cc
--- a/osaf/services/saf/amf/amfd/svctype.cc
+++ b/osaf/services/saf/amf/amfd/svctype.cc
@@ -61,6 +61,24 @@
 {
         unsigned int rc = ncs_patricia_tree_del(&svctype_db, 
&svc_type->tree_node);
         osafassert(rc == NCSCC_RC_SUCCESS);
+
+       if (svc_type->saAmfSvcDefActiveWeight != NULL) {
+               unsigned int i = 0;
+               while (svc_type->saAmfSvcDefActiveWeight[i] != NULL) {
+                       delete [] svc_type->saAmfSvcDefActiveWeight[i];
+                       ++i;
+               }
+               delete [] svc_type->saAmfSvcDefActiveWeight;
+       }
+
+       if (svc_type->saAmfSvcDefStandbyWeight != NULL) {
+               unsigned int i = 0;
+               while (svc_type->saAmfSvcDefStandbyWeight[i] != NULL) {
+                       delete [] svc_type->saAmfSvcDefStandbyWeight[i];
+                       ++i;
+               }
+               delete [] svc_type->saAmfSvcDefStandbyWeight;
+       }
         delete svc_type;
 }

@@ -77,6 +95,8 @@
         memcpy(svct->name.value, dn->value, dn->length);
         svct->name.length = dn->length;
         svct->tree_node.key_info = (uint8_t *)&svct->name;
+       svct->saAmfSvcDefActiveWeight = NULL;
+       svct->saAmfSvcDefStandbyWeight = NULL;

         /* Optional, [0..*] */
         if 
(immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfSvcDefActiveWeight"),
 attributes, &attrValuesNumber) == SA_AIS_OK) {
diff --git a/osaf/services/saf/amf/amfd/util.cc 
b/osaf/services/saf/amf/amfd/util.cc
--- a/osaf/services/saf/amf/amfd/util.cc
+++ b/osaf/services/saf/amf/amfd/util.cc
@@ -1655,7 +1655,7 @@
                 compcsi_info = susi_msg->msg_info.d2n_su_si_assign.list;
                 susi_msg->msg_info.d2n_su_si_assign.list = compcsi_info->next;
                 if (compcsi_info->attrs.list != NULL) {
-                       delete(compcsi_info->attrs.list);
+                       delete [] (compcsi_info->attrs.list);
                         compcsi_info->attrs.list = NULL;
                 }
                 delete compcsi_info;
@@ -1681,7 +1681,7 @@
         AVSV_D2N_PG_TRACK_ACT_RSP_MSG_INFO *info = 
&pg_msg->msg_info.d2n_pg_track_act_rsp;

         if (info->mem_list.numberOfItems)
-               delete info->mem_list.notification;
+               delete [] info->mem_list.notification;

         info->mem_list.notification = 0;
         info->mem_list.numberOfItems = 0;
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to