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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel