ACK.

-----Original Message-----
From: Tai Huynh Nguyen <tai.h.ngu...@dektech.com.au> 
Sent: Thursday, May 25, 2023 4:23 PM
To: Dat Tran Quoc Phan <dat.tq.p...@dektech.com.au>; Thien Minh Huynh 
<thien.m.hu...@dektech.com.au>; Thang Duc Nguyen <thang.d.ngu...@dektech.com.au>
Cc: opensaf-devel@lists.sourceforge.net; Tai Huynh Nguyen 
<tai.h.ngu...@dektech.com.au>
Subject: [PATCH 1/1] amf: Fix errors reported by valgrind [#3339]

Fix access uninitialised value
---
 src/amf/amfnd/avnd_comp.h |  2 +-
 src/amf/amfnd/cbq.cc      | 16 +++++++++++-----
 src/amf/amfnd/comp.cc     |  1 +
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/amf/amfnd/avnd_comp.h b/src/amf/amfnd/avnd_comp.h index 
bbc2aa0f3..c3339ac79 100644
--- a/src/amf/amfnd/avnd_comp.h
+++ b/src/amf/amfnd/avnd_comp.h
@@ -878,7 +878,7 @@ extern uint32_t avnd_dblist_hc_rec_cmp(uint8_t *key1, 
uint8_t *key2);  extern void avnd_comp_hc_rec_del_all(struct avnd_cb_tag *, 
AVND_COMP *);
 
 extern void avnd_comp_cbq_del(struct avnd_cb_tag *, AVND_COMP *, bool); 
-extern void avnd_comp_cbq_rec_pop_and_del(struct avnd_cb_tag *, AVND_COMP *,
+extern uint32_t avnd_comp_cbq_rec_pop_and_del(struct avnd_cb_tag *, 
+AVND_COMP *,
                                           uint32_t opq_hdl, bool);  extern 
AVND_COMP_CBK *avnd_comp_cbq_rec_add(struct avnd_cb_tag *, AVND_COMP *,
                                             AVSV_AMF_CBK_INFO *, MDS_DEST *, 
diff --git a/src/amf/amfnd/cbq.cc b/src/amf/amfnd/cbq.cc index 
d2de58f28..6e18c8edc 100644
--- a/src/amf/amfnd/cbq.cc
+++ b/src/amf/amfnd/cbq.cc
@@ -247,6 +247,7 @@ uint32_t avnd_evt_ava_resp_evh(AVND_CB *cb, AVND_EVT *evt) {
   uint32_t rc = NCSCC_RC_SUCCESS;
   bool msg_from_avnd = false, int_ext_comp = false;
   SaAisErrorT amf_rc = SA_AIS_OK;
+  uint32_t cbk_rec_deleted = 0;
 
   TRACE_ENTER();
 
@@ -432,9 +433,12 @@ uint32_t avnd_evt_ava_resp_evh(AVND_CB *cb, AVND_EVT *evt) 
{
         LOG_ER("'%s', not found",
                osaf_extended_name_borrow(
                    &cbk_rec->cbk_info->param.csi_attr_change.csi_name));
-      avnd_comp_cbq_rec_pop_and_del(cb, comp, cbk_rec->opq_hdl, false);
-      if (m_AVND_TMR_IS_ACTIVE(cbk_rec->resp_tmr)) {
-        m_AVND_TMR_COMP_CBK_RESP_STOP(cb, *cbk_rec)
+      cbk_rec_deleted =
+          avnd_comp_cbq_rec_pop_and_del(cb, comp, cbk_rec->opq_hdl, false);
+      if (!cbk_rec_deleted) {
+        if (m_AVND_TMR_IS_ACTIVE(cbk_rec->resp_tmr)) {
+          m_AVND_TMR_COMP_CBK_RESP_STOP(cb, *cbk_rec)
+        }
       }
       if (SA_AIS_OK != resp->err) {
         // generate a failure report.
@@ -943,11 +947,12 @@ void avnd_comp_cbq_del(AVND_CB *cb, AVND_COMP *comp, bool 
send_del_cbk) {
                   send_del_cbk - true if the callback is tobe deleted and
                                  an event can be sent to another AvND.
 
-  Return Values : None.
+  Return Values : true if found and delete the record
+                  false if not found the record.
 
   Notes         : None.
 ******************************************************************************/
-void avnd_comp_cbq_rec_pop_and_del(AVND_CB *cb, AVND_COMP *comp,
+uint32_t avnd_comp_cbq_rec_pop_and_del(AVND_CB *cb, AVND_COMP *comp,
                                    uint32_t opq_hdl, bool send_del_cbk) {
   uint32_t found;
   NODE_ID dest_node_id = 0;
@@ -972,6 +977,7 @@ void avnd_comp_cbq_rec_pop_and_del(AVND_CB *cb, AVND_COMP 
*comp,
     }   /* if(true == send_del_cbk) */
     avnd_comp_cbq_rec_del(cb, comp, rec);
   } /* if(found) */
+  return found;
 }
 
 /****************************************************************************
diff --git a/src/amf/amfnd/comp.cc b/src/amf/amfnd/comp.cc index 
9e67cf388..8c0bf35ff 100644
--- a/src/amf/amfnd/comp.cc
+++ b/src/amf/amfnd/comp.cc
@@ -1993,6 +1993,7 @@ static void 
set_params_for_csi_attr_change_cbk(AVSV_AMF_CBK_INFO *cbk_info,
 
   /* copy the attributes */
   memset(&attr, 0, sizeof(AVSV_CSI_ATTRS));
+  memset(&csi_name, 0, sizeof(SaNameT));
   if (csi_rec->attrs.number != 0) {
     attr.list = static_cast<AVSV_ATTR_NAME_VAL *>(
         calloc(csi_rec->attrs.number, sizeof(AVSV_ATTR_NAME_VAL)));
--
2.17.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to