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:[email protected]]
Sent: Wednesday, November 16, 2016 3:29 PM
To: Vo Minh Hoang <[email protected]>; [email protected]
Cc: [email protected]
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:[email protected]]
> Sent: Wednesday, November 16, 2016 11:00 AM
> To: Vo Minh Hoang <[email protected]>;
> [email protected]
> Cc: [email protected]
> 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:[email protected]]
>> Sent: Wednesday, November 16, 2016 10:22 AM
>> To: Hoang Vo <[email protected]>; [email protected]
>> Cc: [email protected]
>> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel