Skip to content

Commit feab99e

Browse files
committed
unirecfilter - fix filter syntax error caused by empty filter
1 parent a63ec26 commit feab99e

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

unirecfilter/lib/liburfilter.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,19 @@
5454
#include "functions.h"
5555
#include "liburfilter.h"
5656

57+
#include <string.h>
58+
5759
urfilter_t *urfilter_create(const char *filter_str, const char *ifc_identifier)
5860
{
5961
// allocate filter structure
6062
urfilter_t *unirec_filter = (urfilter_t *) calloc(1, sizeof (urfilter_t));
6163

6264
if (filter_str) {
63-
unirec_filter->filter = strdup(filter_str);
65+
if (strlen(filter_str) == 0) {
66+
unirec_filter->filter = NULL;
67+
} else {
68+
unirec_filter->filter = strdup(filter_str);
69+
}
6470
unirec_filter->ifc_identifier = ifc_identifier;
6571
}
6672

@@ -87,6 +93,11 @@ int urfilter_compile(urfilter_t *unirec_filter)
8793

8894
int urfilter_match(urfilter_t *unirec_filter, const ur_template_t *template, const void *record)
8995
{
96+
// empty filter means always TRUE
97+
if (!unirec_filter->filter) {
98+
return URFILTER_TRUE;
99+
}
100+
90101
if (!unirec_filter->tree) {
91102
if (unirec_filter->filter) {
92103
if (urfilter_compile(unirec_filter) != URFILTER_TRUE) {
@@ -98,12 +109,7 @@ int urfilter_match(urfilter_t *unirec_filter, const ur_template_t *template, con
98109
return URFILTER_ERROR;
99110
}
100111
}
101-
102-
// empty filter means always TRUE
103-
if (!unirec_filter->filter) {
104-
return URFILTER_TRUE;
105-
}
106-
112+
107113
if (unirec_filter->tree) {
108114
return evalAST((struct ast *) unirec_filter->tree, template, record);
109115
}

0 commit comments

Comments
 (0)