Re: [devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail V2
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(_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, _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
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(_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, _msg); -- ___ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel
Re: [devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail
Ok, please re-test and publish. -AVM On 11/16/2016 2:43 PM, Vo Minh Hoang wrote: > 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; 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 ; >> 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 removevariable `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 ; 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 = >>>
Re: [devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail
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; 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 ; > 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 removevariable `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 ; 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 = >>
Re: [devel] [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; 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 removevariable `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 ; 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
Re: [devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail
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; 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 removevariable `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 ; 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
Re: [devel] [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 removevariable `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; 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
Re: [devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail
Hi Hoang Vo, 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 removevariable `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 8:51 AM, A V Mahesh wrote: > 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 -- ___ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel
Re: [devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail
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; 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
Re: [devel] [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
[devel] [PATCH 1 of 1] fix crash problem by checking null pointer before accessing its detail
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