osaf/libs/agents/saf/cpa/cpa_api.c | 12 ++++++++++++ osaf/libs/agents/saf/cpa/cpa_mds.c | 2 +- osaf/libs/common/cpsv/cpsv_evt.c | 1 + osaf/services/saf/cpsv/cpd/cpd_proc.c | 2 +- osaf/services/saf/cpsv/cpnd/cpnd_evt.c | 2 ++ osaf/services/saf/cpsv/cpnd/cpnd_proc.c | 2 +- 6 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/osaf/libs/agents/saf/cpa/cpa_api.c b/osaf/libs/agents/saf/cpa/cpa_api.c --- a/osaf/libs/agents/saf/cpa/cpa_api.c +++ b/osaf/libs/agents/saf/cpa/cpa_api.c @@ -880,6 +880,10 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH } ckpt_name = osaf_extended_name_borrow(checkpointName); + if (strlen(ckpt_name) >= kOsafMaxDnLength) { + TRACE_LEAVE2("API return code = %u", SA_AIS_ERR_INVALID_PARAM); + return SA_AIS_ERR_INVALID_PARAM; + } /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02 Section 3.6.1 saCkptCheckpointOpen() and saCkptCheckpointOpenAsync(), Return Values */ @@ -1192,6 +1196,10 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa } ckpt_name = osaf_extended_name_borrow(checkpointName); + if (strlen(ckpt_name) >= kOsafMaxDnLength) { + TRACE_LEAVE2("API return code = %u", SA_AIS_ERR_INVALID_PARAM); + return SA_AIS_ERR_INVALID_PARAM; + } /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02 Section 3.6.1 saCkptCheckpointOpen() and saCkptCheckpointOpenAsync(), Return Values */ @@ -1597,6 +1605,10 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp } ckpt_name = osaf_extended_name_borrow(checkpointName); + if (strlen(ckpt_name) >= kOsafMaxDnLength) { + TRACE_LEAVE2("API return code = %u", SA_AIS_ERR_INVALID_PARAM); + return SA_AIS_ERR_INVALID_PARAM; + } /* retrieve CPA CB */ m_CPA_RETRIEVE_CB(cb); diff --git a/osaf/libs/agents/saf/cpa/cpa_mds.c b/osaf/libs/agents/saf/cpa/cpa_mds.c --- a/osaf/libs/agents/saf/cpa/cpa_mds.c +++ b/osaf/libs/agents/saf/cpa/cpa_mds.c @@ -515,9 +515,9 @@ static uint32_t cpa_mds_svc_evt(CPA_CB * /* Populate & Send the Open Event to CPND */ memset(&evt, 0, sizeof(CPSV_EVT)); evt.type = CPSV_EVT_TYPE_CPND; - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_LIST_UPDATE; evt.info.cpnd.info.ckptListUpdate.client_hdl = lc_node->cl_hdl; osaf_extended_name_lend(lc_node->ckpt_name, &evt.info.cpnd.info.ckptListUpdate.ckpt_name); + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_LIST_UPDATE; proc_rc = cpa_mds_msg_send(cb->cpa_mds_hdl, &cb->cpnd_mds_dest, &evt, NCSMDS_SVC_ID_CPND); diff --git a/osaf/libs/common/cpsv/cpsv_evt.c b/osaf/libs/common/cpsv/cpsv_evt.c --- a/osaf/libs/common/cpsv/cpsv_evt.c +++ b/osaf/libs/common/cpsv/cpsv_evt.c @@ -2378,6 +2378,7 @@ static uint32_t cpsv_encode_extended_nam if(!osaf_is_an_extended_name(name)) return NCSCC_RC_SUCCESS; + TRACE("length = %d", name->length); SaConstStringT value = osaf_extended_name_borrow(name); uint16_t length = osaf_extended_name_length(name); diff --git a/osaf/services/saf/cpsv/cpd/cpd_proc.c b/osaf/services/saf/cpsv/cpd/cpd_proc.c --- a/osaf/services/saf/cpsv/cpd/cpd_proc.c +++ b/osaf/services/saf/cpsv/cpd/cpd_proc.c @@ -61,9 +61,9 @@ uint32_t cpd_noncolloc_ckpt_rep_create(C /* Send the Replica create info to CPND */ memset(&send_evt, 0, sizeof(CPSV_EVT)); send_evt.type = CPSV_EVT_TYPE_CPND; - send_evt.info.cpnd.type = CPND_EVT_D2ND_CKPT_CREATE; osaf_extended_name_lend(map_info->ckpt_name, &send_evt.info.cpnd.info.ckpt_create.ckpt_name); + send_evt.info.cpnd.type = CPND_EVT_D2ND_CKPT_CREATE; d2nd_info = &send_evt.info.cpnd.info.ckpt_create.ckpt_info; diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c --- a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c +++ b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c @@ -4638,6 +4638,8 @@ uint32_t cpnd_evt_destroy(CPSV_EVT *evt) if (osaf_is_an_extended_name(&evt->info.cpnd.info.ckptListUpdate.ckpt_name)) free((void *)osaf_extended_name_borrow(&evt->info.cpnd.info.ckptListUpdate.ckpt_name)); } else if (evt->info.cpnd.type == CPND_EVT_D2ND_CKPT_CREATE) { + if (evt->info.cpnd.info.ckpt_create.ckpt_info.dest_list != NULL) + m_MMGR_FREE_CPSV_SYS_MEMORY(evt->info.cpnd.info.ckpt_create.ckpt_info.dest_list); if (osaf_is_an_extended_name(&evt->info.cpnd.info.ckpt_create.ckpt_name)) free((void *)osaf_extended_name_borrow(&evt->info.cpnd.info.ckpt_create.ckpt_name)); } diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c --- a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c +++ b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c @@ -2529,9 +2529,9 @@ void cpnd_proc_ckpt_info_update(CPND_CB LOG_NO("cpnd_proc_update_cpd_data::ckpt_name = %s[%llu]", (char*)ckpt_node->ckpt_name, ckpt_node->ckpt_id); send_evt.type = CPSV_EVT_TYPE_CPD; - send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_INFO_UPDATE; send_evt.info.cpd.info.ckpt_info.ckpt_id = ckpt_node->ckpt_id; osaf_extended_name_lend(ckpt_node->ckpt_name, &send_evt.info.cpd.info.ckpt_info.ckpt_name); + send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_INFO_UPDATE; send_evt.info.cpd.info.ckpt_info.attributes = ckpt_node->create_attrib; send_evt.info.cpd.info.ckpt_info.ckpt_flags = ckpt_node->open_flags; send_evt.info.cpd.info.ckpt_info.num_users = ckpt_node->ckpt_lcl_ref_cnt; ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel