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