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

Reply via email to