osaf/services/saf/cpsv/cpd/cpd_red.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/osaf/services/saf/cpsv/cpd/cpd_red.c b/osaf/services/saf/cpsv/cpd/cpd_red.c --- a/osaf/services/saf/cpsv/cpd/cpd_red.c +++ b/osaf/services/saf/cpsv/cpd/cpd_red.c @@ -301,7 +301,6 @@ void cpd_a2s_ckpt_dest_del(CPD_CB *cb, S void cpd_a2s_ckpt_usr_info(CPD_CB *cb, CPD_CKPT_INFO_NODE *ckpt_node) { CPD_MBCSV_MSG cpd_msg; - int count = 0; uint32_t rc = SA_AIS_OK; memset(&cpd_msg, '\0', sizeof(CPD_MBCSV_MSG)); @@ -316,18 +315,22 @@ void cpd_a2s_ckpt_usr_info(CPD_CB *cb, C cpd_msg.info.usr_info_2.ckpt_on_scxb2 = ckpt_node->ckpt_on_scxb2; if (ckpt_node->node_users_cnt) { + int count = 0; CPD_NODE_USER_INFO *node_user = ckpt_node->node_users; - cpd_msg.info.usr_info_2.node_users_cnt = ckpt_node->node_users_cnt; cpd_msg.info.usr_info_2.node_list = malloc(ckpt_node->node_users_cnt * sizeof(CPD_NODE_USER_INFO)); memset(cpd_msg.info.usr_info_2.node_list, '\0', (sizeof(CPD_NODE_USER_INFO) * ckpt_node->node_users_cnt)); - for (count = 0; count < ckpt_node->node_users_cnt; count++) { + for (; node_user != NULL && count < ckpt_node->node_users_cnt; node_user = node_user->next) { cpd_msg.info.usr_info_2.node_list[count].dest = node_user->dest; cpd_msg.info.usr_info_2.node_list[count].num_users = node_user->num_users; cpd_msg.info.usr_info_2.node_list[count].num_readers = node_user->num_readers; cpd_msg.info.usr_info_2.node_list[count].num_writers = node_user->num_writers; - node_user = node_user->next; + ++count; } + + /* Update node_users_cnt in case of mismatch */ + ckpt_node->node_users_cnt = count; + cpd_msg.info.usr_info_2.node_users_cnt = count; } rc = cpd_mbcsv_async_update(cb, &cpd_msg); ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel