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