Fix: filter string comparison should check for literal
[lttng-ust.git] / liblttng-ust / lttng-filter-interpreter.c
index 8d74e7f9615461f1421f1042ee49234c64f33175..8640960801b323d9ce5403d01c2234abfd21392c 100644 (file)
@@ -60,27 +60,27 @@ int stack_strcmp(struct estack *stack, int top, const char *cmp_type)
 
                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') {
-                               diff = 0;
+                               return 0;
                        } else {
-                               ret = parse_char(&q);
-                               if (ret == -1)
-                                       diff = 0;
-                               else
-                                       diff = -1;
+                               if (estack_ax(stack, top)->u.s.literal) {
+                                       ret = parse_char(&q);
+                                       if (ret == -1)
+                                               return 0;
+                               }
+                               return -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') {
-                               diff = 0;
+                               return 0;
                        } else {
-                               ret = parse_char(&p);
-                               if (ret == -1)
-                                       diff = 0;
-                               else
-                                       diff = 1;
+                               if (estack_bx(stack, top)->u.s.literal) {
+                                       ret = parse_char(&p);
+                                       if (ret == -1)
+                                               return 0;
+                               }
+                               return 1;
                        }
-                       break;
                }
                if (estack_bx(stack, top)->u.s.literal) {
                        ret = parse_char(&p);
This page took 0.023757 seconds and 4 git commands to generate.