Fix: filter string wildcard comparison
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 27 Mar 2013 14:50:56 +0000 (10:50 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 27 Mar 2013 14:51:52 +0000 (10:51 -0400)
wildcards * should match 0 or more characters (not 1 or more).

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust/lttng-filter-interpreter.c

index 4b75f0bcd01854b4de53e1877ce05603919d2aa4..8d74e7f9615461f1421f1042ee49234c64f33175 100644 (file)
@@ -59,17 +59,27 @@ int stack_strcmp(struct estack *stack, int top, const char *cmp_type)
                int escaped_r0 = 0;
 
                if (unlikely(p - estack_bx(stack, top)->u.s.str > estack_bx(stack, top)->u.s.seq_len || *p == '\0')) {
-                       if (q - estack_ax(stack, top)->u.s.str > estack_ax(stack, top)->u.s.seq_len || *q == '\0')
+                       if (q - estack_ax(stack, top)->u.s.str > estack_ax(stack, top)->u.s.seq_len || *q == '\0') {
                                diff = 0;
-                       else
-                               diff = -1;
+                       } else {
+                               ret = parse_char(&q);
+                               if (ret == -1)
+                                       diff = 0;
+                               else
+                                       diff = -1;
+                       }
                        break;
                }
                if (unlikely(q - estack_ax(stack, top)->u.s.str > estack_ax(stack, top)->u.s.seq_len || *q == '\0')) {
-                       if (p - estack_bx(stack, top)->u.s.str > estack_bx(stack, top)->u.s.seq_len || *p == '\0')
+                       if (p - estack_bx(stack, top)->u.s.str > estack_bx(stack, top)->u.s.seq_len || *p == '\0') {
                                diff = 0;
-                       else
-                               diff = 1;
+                       } else {
+                               ret = parse_char(&p);
+                               if (ret == -1)
+                                       diff = 0;
+                               else
+                                       diff = 1;
+                       }
                        break;
                }
                if (estack_bx(stack, top)->u.s.literal) {
This page took 0.025869 seconds and 4 git commands to generate.