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);
 

Reply via email to