Dear Mahesh,

Thank you very much.

Might it be like this acceptable, If yes I will send V2 patch.

        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_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 (; 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;
                        ++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;
        }


Sincerely,
Hoang

-----Original Message-----
From: A V Mahesh [mailto:mahesh.va...@oracle.com] 
Sent: Wednesday, November 16, 2016 3:29 PM
To: Vo Minh Hoang <hoang.m...@dektech.com.au>; anders.wid...@ericsson.com
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [PATCH 1 of 1] fix crash problem by checking null pointer
before accessing its detail

Hi,

Still we can right the code, I just checked the code,  follow the way
`node_user = node_user->next` is used in other occurrence part of the code.

-AVM

On 11/16/2016 12:16 PM, Vo Minh Hoang wrote:
> Dear Mahesh,
>
> Thank you very much for your comments.
>
> Because the coredump occur when ckpt_node->node_users_cnt is not 
> updated correctly to the number of node_user so we count here to 
> handle that mismatch.
> Might it possible to keep using like currently?
>
> Sincerely,
> Hoang
>
> -----Original Message-----
> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
> Sent: Wednesday, November 16, 2016 11:00 AM
> To: Vo Minh Hoang <hoang.m...@dektech.com.au>; 
> anders.wid...@ericsson.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: Re: [PATCH 1 of 1] fix crash problem by checking null pointer 
> before accessing its detail
>
>
> Hi Hoang Vo,
>
>>> Please let me know if you have any further inquiry.
>
> Can you please also make the fix more readable replace  `for (count = 
> 0; count < ckpt_node->node_users_cnt; count++) {` some thing like `for 
> (node_user = ckpt_node->node_users; node_user != NULL; node_user =
> node_user->next) {`
> then, we can remove    variable `int count = 0;`,   move
> `cpd_msg.info.usr_info_2.node_users_cnt = ckpt_node->node_users_cnt;` 
> after for () loop.
>
> -AVM
>
>
> On 11/16/2016 9:14 AM, Vo Minh Hoang wrote:
>> Dear Mahesh,
>>
>> I am sorry that I cannot share the test steps because I cannot 
>> reproduce it in local environment.
>> I've just received the coredump information point directly to this 
>> part, reviewed source code and found that pointer using is unsafe so 
>> I
> correct it.
>> Please let me know if you have any further inquiry.
>>
>> Thank you and best regard,
>> Hoang
>>
>> -----Original Message-----
>> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
>> Sent: Wednesday, November 16, 2016 10:22 AM
>> To: Hoang Vo <hoang.m...@dektech.com.au>; anders.wid...@ericsson.com
>> Cc: opensaf-devel@lists.sourceforge.net
>> Subject: Re: [PATCH 1 of 1] fix crash problem by checking null 
>> pointer before accessing its detail
>>
>> Hi Hoang Vo,
>>
>> On 11/15/2016 12:57 PM, Hoang Vo wrote:
>>> Testing Commands:
>>> -----------------
>>>
>>>
>>> Testing, Expected Results:
>>> --------------------------
>>>
>> Can you please share test case .
>>
>> -AVM
>>
>> On 11/15/2016 12:57 PM, Hoang Vo wrote:
>>>     osaf/services/saf/cpsv/cpd/cpd_red.c |  5 +++++
>>>     1 files changed, 5 insertions(+), 0 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
>>> @@ -322,6 +322,11 @@ void cpd_a2s_ckpt_usr_info(CPD_CB *cb, C
>>>                     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++)
>> {
>>> +                   if (node_user == NULL) {
>>> +                           ckpt_node->node_users_cnt = count;
>>> +                           cpd_msg.info.usr_info_2.node_users_cnt =
>> count;
>>> +                           break;
>>> +                   }
>>>
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;
>>
>>
>



------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to