This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch support/2.4 in repository https://gitbox.apache.org/repos/asf/celix.git
commit 9d5d032497912207920b65cb98b40c80f31fbdf7 Author: xuzhenbao <[email protected]> AuthorDate: Thu Oct 19 10:09:03 2023 +0800 Resolve address sanitizer error for `celix_filter_create` --- libs/utils/gtest/src/FilterTestSuite.cc | 8 ++++++++ libs/utils/src/filter.c | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libs/utils/gtest/src/FilterTestSuite.cc b/libs/utils/gtest/src/FilterTestSuite.cc index 3a1b41c0..55fb5e2c 100644 --- a/libs/utils/gtest/src/FilterTestSuite.cc +++ b/libs/utils/gtest/src/FilterTestSuite.cc @@ -418,6 +418,14 @@ TEST_F(FilterTestSuite, AutoCleanupTest) { celix_autoptr(celix_filter_t) filter = celix_filter_create("(test_attr1=attr1)"); } +TEST_F(FilterTestSuite, create_fail_missing_filter_operand) { + celix_filter_t * filter= celix_filter_create("(&(test))"); + ASSERT_TRUE(filter == NULL); + + filter= celix_filter_create("(!(test))"); + ASSERT_TRUE(filter == NULL); +} + #include "filter.h" TEST_F(FilterTestSuite, deprecatedApi) { auto* f1 = filter_create("(test_attr1=attr1)"); diff --git a/libs/utils/src/filter.c b/libs/utils/src/filter.c index 535ab4c0..e5931290 100644 --- a/libs/utils/src/filter.c +++ b/libs/utils/src/filter.c @@ -145,7 +145,7 @@ static celix_filter_t * filter_parseAndOrOr(char * filterString, celix_filter_op filter_destroy(f); } celix_arrayList_destroy(children); - children = NULL; + return NULL; } celix_filter_t * filter = (celix_filter_t *) calloc(1, sizeof(*filter)); @@ -165,7 +165,9 @@ static celix_filter_t * filter_parseNot(char * filterString, int * pos) { } child = filter_parseFilter(filterString, pos); - + if(child == NULL){ + return NULL; + } celix_array_list_t* children = celix_arrayList_create(); celix_arrayList_add(children, child);
