Ack, (only code review)/BR HansN
On 01/13/14 08:30, Gary Lee wrote:
> 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