Re: [devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail V2

2016-11-16 Thread A V Mahesh
Hi Hoang,

ACK with following :

We can replace  `CPD_NODE_USER_INFO *node_user = ckpt_node->node_users; 
`  with  `CPD_NODE_USER_INFO *node_user;`and
replace   `for (; node_user != NULL && count < 
ckpt_node->node_users_cnt; node_user = node_user->next) {` with
`for (node_user = ckpt_node->node_users; node_user != NULL && count < 
ckpt_node->node_users_cnt; node_user = node_user->next) {`

-AVM

On 11/17/2016 7:33 AM, Hoang Vo wrote:
>   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


[devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail V2

2016-11-16 Thread Hoang Vo
 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