osaf/services/saf/amf/amfnd/di.cc   |   5 ++++-
 osaf/services/saf/amf/amfnd/hcdb.cc |   3 +--
 osaf/services/saf/amf/amfnd/main.cc |   2 +-
 osaf/services/saf/amf/amfnd/pg.cc   |   5 ++---
 osaf/services/saf/amf/amfnd/sidb.cc |  12 +++++++-----
 osaf/services/saf/amf/amfnd/sudb.cc |   4 ++--
 osaf/services/saf/amf/amfnd/susm.cc |  22 ++++++++++++++++++++--
 osaf/services/saf/amf/amfnd/term.cc |   2 +-
 8 files changed, 38 insertions(+), 17 deletions(-)


* Dereference before null check (REVERSE_INULL)
* Logically dead code (DEADCODE)
* Uninitialized scalar variable (UNINIT)
* Dereference null return value (NULL_RETURNS)
* Unnecessary header file (HFA)
* Side effect in assertion (ASSERT_SIDE_EFFECT)
* Unchecked return value (CHECKED_RETURN)

In pg.cc, remove "cbk_info = NULL;" statement which causes
memory leak.

diff --git a/osaf/services/saf/amf/amfnd/di.cc 
b/osaf/services/saf/amf/amfnd/di.cc
--- a/osaf/services/saf/amf/amfnd/di.cc
+++ b/osaf/services/saf/amf/amfnd/di.cc
@@ -764,12 +764,15 @@
 {
        AVND_DND_MSG_LIST *rec = 0;
        uint32_t rc = NCSCC_RC_SUCCESS;
-       TRACE_ENTER2("Msg type '%u'", msg->info.avd->msg_type);
 
+       TRACE_ENTER();
+       
        /* nothing to send */
        if (!msg)
                goto done;
 
+       TRACE_2("Msg type '%u'", msg->info.avd->msg_type);
+
        /* Verify Ack nack and PG track action msgs are not buffered */
        if (m_AVSV_N2D_MSG_IS_PG_TRACK_ACT(msg->info.avd)) {
                /*send the response to AvD */
diff --git a/osaf/services/saf/amf/amfnd/hcdb.cc 
b/osaf/services/saf/amf/amfnd/hcdb.cc
--- a/osaf/services/saf/amf/amfnd/hcdb.cc
+++ b/osaf/services/saf/amf/amfnd/hcdb.cc
@@ -228,8 +228,7 @@
        const SaImmAttrValuesT_2 **attributes;
        const char *className = "SaAmfHealthcheck";
        SaNameT comp_dn = comp->name;
-       comp_dn.length = comp_dn.length;
-       SaImmHandleT immOmHandle;
+       SaImmHandleT immOmHandle = 0;
        SaVersionT immVersion = { 'A', 2, 1 };
 
        immutil_saImmOmInitialize(&immOmHandle, NULL, &immVersion);
diff --git a/osaf/services/saf/amf/amfnd/main.cc 
b/osaf/services/saf/amf/amfnd/main.cc
--- a/osaf/services/saf/amf/amfnd/main.cc
+++ b/osaf/services/saf/amf/amfnd/main.cc
@@ -28,7 +28,6 @@
 #include "avnd_mon.h"
 #include "configmake.h"
 #include "daemon.h"
-#include "immutil.h"
 #include "logtrace.h"
 #include "nid_api.h"
 
@@ -643,6 +642,7 @@
        uint32_t rc = NCSCC_RC_SUCCESS;
        TRACE_ENTER();
 
+       osafassert(evt);
        /* validate the event type */
        if ((evt->type <= AVND_EVT_INVALID) || (evt->type >= AVND_EVT_MAX)) {
                LOG_ER("%s: Unknown event %u",__FUNCTION__,evt->type);
diff --git a/osaf/services/saf/amf/amfnd/pg.cc 
b/osaf/services/saf/amf/amfnd/pg.cc
--- a/osaf/services/saf/amf/amfnd/pg.cc
+++ b/osaf/services/saf/amf/amfnd/pg.cc
@@ -294,6 +294,7 @@
 
                        if (NULL == pg_mem) {
                                pg_mem = avnd_pgdb_mem_rec_add(cb, pg, 
mem_info);
+                               osafassert(pg_mem);
                        } else {
                                pg_mem->mem_exist = true;
                                /* Compare the data and give call back of there 
is mis-match */
@@ -780,9 +781,7 @@
 
        /* now send the cbk msg */
        rc = avnd_pg_cbk_msg_send(cb, trk, cbk_info);
-       /* we will free the ckb info both in success/failure case */
-       cbk_info = NULL;
-
+       
        /* reset the is_syn flag */
        trk->info.is_syn = false;
 
diff --git a/osaf/services/saf/amf/amfnd/sidb.cc 
b/osaf/services/saf/amf/amfnd/sidb.cc
--- a/osaf/services/saf/amf/amfnd/sidb.cc
+++ b/osaf/services/saf/amf/amfnd/sidb.cc
@@ -149,20 +149,22 @@
 static uint32_t get_sirank(const SaNameT *dn)
 {
        SaAisErrorT error;
-       SaImmAccessorHandleT accessorHandle;
+       SaImmAccessorHandleT accessorHandle = 0;
        const SaImmAttrValuesT_2 **attributes;
        SaImmAttrNameT attributeNames[2] = 
{const_cast<SaImmAttrNameT>("saAmfSIRank"), NULL};
-       SaImmHandleT immOmHandle;
+       SaImmHandleT immOmHandle = 0;
        SaVersionT immVersion = {'A', 2, 1};
        uint32_t rank = -1; // lowest possible rank if uninitialized
 
        immutil_saImmOmInitialize(&immOmHandle, NULL, &immVersion);
        immutil_saImmOmAccessorInitialize(immOmHandle, &accessorHandle);
 
-       osafassert((error = immutil_saImmOmAccessorGet_2(accessorHandle, dn,
-               attributeNames, (SaImmAttrValuesT_2 ***)&attributes)) == 
SA_AIS_OK);
+       error = immutil_saImmOmAccessorGet_2(accessorHandle, dn,
+               attributeNames, (SaImmAttrValuesT_2 ***)&attributes);
+       osafassert(error == SA_AIS_OK);
 
-       osafassert((error = immutil_getAttr(attributeNames[0], attributes, 0, 
&rank)) == SA_AIS_OK);
+       error = immutil_getAttr(attributeNames[0], attributes, 0, &rank);
+       osafassert(error == SA_AIS_OK);
 
        // saAmfSIRank attribute has a default value of zero (returned by IMM)
        if (rank == 0) {
diff --git a/osaf/services/saf/amf/amfnd/sudb.cc 
b/osaf/services/saf/amf/amfnd/sudb.cc
--- a/osaf/services/saf/amf/amfnd/sudb.cc
+++ b/osaf/services/saf/amf/amfnd/sudb.cc
@@ -281,9 +281,9 @@
  */
 void su_get_config_attributes(AVND_SU *su)
 {
-       SaImmAccessorHandleT accessorHandle;
+       SaImmAccessorHandleT accessorHandle = 0;
        const SaImmAttrValuesT_2 **attributes;
-       SaImmHandleT immOmHandle;
+       SaImmHandleT immOmHandle = 0;
        SaVersionT immVersion = { 'A', 2, 1 };
        SaNameT sutype;
        TRACE_ENTER2("'%s'", su->name.value);
diff --git a/osaf/services/saf/amf/amfnd/susm.cc 
b/osaf/services/saf/amf/amfnd/susm.cc
--- a/osaf/services/saf/amf/amfnd/susm.cc
+++ b/osaf/services/saf/amf/amfnd/susm.cc
@@ -261,7 +261,7 @@
             si && !((m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(si) &&
                      (SA_AMF_HA_QUIESCING != si->curr_state)) ||
                     (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_REMOVING(si)));
-            si = (AVND_SU_SI_REC *)m_NCS_DBLIST_FIND_NEXT(&si->su_dll_node)) ;
+       si = (AVND_SU_SI_REC *)m_NCS_DBLIST_FIND_NEXT(&si->su_dll_node)) ;
        if (si) {
                TRACE_LEAVE();
                return rc;
@@ -375,6 +375,7 @@
                        if (true == info->single_csi) {
                                AVND_COMP_CSI_PARAM *csi_param;
                                AVND_COMP_CSI_REC *csi_rec;
+                               osafassert(si);
                                si->single_csi_add_rem_in_si =  
AVSV_SUSI_ACT_DEL;
                                osafassert((info->num_assigns == 1));
                                csi_param = info->list;
@@ -750,7 +751,7 @@
 
                                /* remove the csi */
                                if (curr_csi) {
-                                       rc = avnd_comp_csi_remove(cb, 
curr_csi->comp, (si) ? curr_csi : 0);
+                                       rc = avnd_comp_csi_remove(cb, 
curr_csi->comp, curr_csi);
                                        if (NCSCC_RC_SUCCESS != rc)
                                                goto done;
                                }
@@ -1850,6 +1851,10 @@
        const char *compname = comp ? (char*)comp->name.value : "none";
        TRACE_ENTER2("Component Instantiated event in the Instantiating 
state:'%s' : '%s'",
                                 su->name.value, compname);
+       
+       if (!comp) {
+               goto done;
+       }
 
        /*
         * If pi su, pick the next pi comp & trigger it's FSM with InstEv.
@@ -2240,6 +2245,10 @@
        TRACE_ENTER2("ComponentInstantiate event in the terminating state:'%s' 
: '%s'", 
                                 su->name.value, compname);
 
+       if (!comp) {
+               goto done;
+       }
+
        if (m_AVND_SU_IS_PREINSTANTIABLE(su)) {
                if (m_AVND_COMP_IS_FAILED(comp)) {
                        m_AVND_COMP_FAILED_RESET(comp);
@@ -2253,6 +2262,7 @@
                }
        }
 
+done:
        TRACE_LEAVE2("%u", rc);
        return rc;
 }
@@ -2379,6 +2389,10 @@
        TRACE_ENTER2("Component Uninstantiated event in the Terminating 
state:'%s' : '%s'",
                                 su->name.value, compname);
 
+       if (!comp) {
+               goto done;
+       }
+       
        /* This case is for handling the case of admn su term while su is 
restarting */
        if (m_AVND_SU_IS_PREINSTANTIABLE(su) && m_AVND_SU_IS_FAILED(su) &&
                        (m_AVND_SU_IS_ADMN_TERM(su) || 
sufailover_in_progress(su)))
@@ -2558,6 +2572,10 @@
        TRACE_ENTER2("ComponentInstantiated event in the Restarting state:'%s' 
: '%s'", 
                                 su->name.value, compname);
 
+       if (!comp) {
+               goto done;
+       }
+
        /* 
         * If pi su, pick the next pi comp & trigger it's FSM with RestartEv.
         */
diff --git a/osaf/services/saf/amf/amfnd/term.cc 
b/osaf/services/saf/amf/amfnd/term.cc
--- a/osaf/services/saf/amf/amfnd/term.cc
+++ b/osaf/services/saf/amf/amfnd/term.cc
@@ -212,7 +212,7 @@
        cb->led_state = AVND_LED_STATE_GREEN;
 
        /* Notify the NIS script/deamon that we have fully come up */
-       nid_notify(const_cast<char*>("AMFND"), NCSCC_RC_SUCCESS, NULL);
+       rc = nid_notify(const_cast<char*>("AMFND"), NCSCC_RC_SUCCESS, NULL);
 
 done:
        TRACE_LEAVE();

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to