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
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to