Hi Joerg, Thanks, the patch fixes a very clear error, I applied it and bump to the next point release.
Cheers!, Anibal On Mon, Aug 19, 2024 at 11:20 PM Jörg Sommer via lists.yoctoproject.org <joerg.sommer=navimatix...@lists.yoctoproject.org> wrote: > From: Jörg Sommer <joerg.som...@navimatix.de> > > The back pointer of the next list element was not updated. This lead to > SEGV under some circumstances. > > Signed-off-by: Jörg Sommer <joerg.som...@navimatix.de> > --- > ptest_list.c | 5 +++- > tests/ptest_list.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 68 insertions(+), 1 deletion(-) > > diff --git a/ptest_list.c b/ptest_list.c > index 917ef4f..c221ebf 100644 > --- a/ptest_list.c > +++ b/ptest_list.c > @@ -206,7 +206,10 @@ ptest_list_remove(struct ptest_list *head, char > *ptest, int free) > q = p->prev; > r = p->next; > > - q->next = r; > + if (q != NULL) > + q->next = r; > + if (r != NULL) > + r->prev = q; > > if (free) { > ptest_list_free(p); > diff --git a/tests/ptest_list.c b/tests/ptest_list.c > index 081f027..c3aa107 100644 > --- a/tests/ptest_list.c > +++ b/tests/ptest_list.c > @@ -145,6 +145,67 @@ START_TEST(test_remove) > } > END_TEST > > +START_TEST(test_remove_first) > +{ > + struct ptest_list *head = ptest_list_alloc(); > + struct ptest_list *p; > + > + ptest_list_add(head, strdup("a"), NULL); > + ptest_list_add(head, strdup("b"), NULL); > + ptest_list_add(head, strdup("c"), NULL); > + > + p = ptest_list_remove(head, "a", 0); > + ck_assert_ptr_nonnull(p); > + ck_assert_str_eq(p->ptest, "a"); > + ptest_list_free(p); > + > + ck_assert_ptr_null(ptest_list_search(head, "a")); > + ck_assert_ptr_nonnull(ptest_list_search(head, "b")); > + ck_assert_ptr_nonnull(ptest_list_search(head, "c")); > + ck_assert_int_eq(ptest_list_length(head), 2); > + > + ptest_list_free_all(head); > +} > +END_TEST > + > +START_TEST(test_remove_last) > +{ > + struct ptest_list *head = ptest_list_alloc(); > + struct ptest_list *p; > + > + ptest_list_add(head, strdup("a"), NULL); > + ptest_list_add(head, strdup("b"), NULL); > + ptest_list_add(head, strdup("c"), NULL); > + > + p = ptest_list_remove(head, "c", 0); > + ck_assert_ptr_nonnull(p); > + ck_assert_str_eq(p->ptest, "c"); > + ptest_list_free(p); > + > + ck_assert_ptr_nonnull(ptest_list_search(head, "a")); > + ck_assert_ptr_nonnull(ptest_list_search(head, "b")); > + ck_assert_ptr_null(ptest_list_search(head, "c")); > + ck_assert_int_eq(ptest_list_length(head), 2); > + > + ptest_list_free_all(head); > +} > +END_TEST > + > +START_TEST(test_remove_all) > +{ > + struct ptest_list *head = ptest_list_alloc(); > + > + ptest_list_add(head, strdup("a"), NULL); > + ptest_list_add(head, strdup("b"), NULL); > + > + ck_assert_ptr_null(ptest_list_remove(head, "a", 1)); > + ck_assert_ptr_null(ptest_list_remove(head, "b", 1)); > + ck_assert_int_eq(ptest_list_length(head), 0); > + > + ptest_list_free_all(head); > +} > +END_TEST > + > Suite * > ptest_list_suite() > { > @@ -160,6 +221,9 @@ ptest_list_suite() > tcase_add_test(tc_core, test_length); > tcase_add_test(tc_core, test_search); > tcase_add_test(tc_core, test_remove); > + tcase_add_test(tc_core, test_remove_first); > + tcase_add_test(tc_core, test_remove_last); > + tcase_add_test(tc_core, test_remove_all); > > suite_add_tcase(s, tc_core); > > -- > 2.34.1 > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#63728): https://lists.yoctoproject.org/g/yocto/message/63728 Mute This Topic: https://lists.yoctoproject.org/mt/107995723/21656 Group Owner: yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-