Fix: out of bound array access in filter code
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 10 Mar 2017 21:49:42 +0000 (16:49 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 10 Mar 2017 21:49:42 +0000 (16:49 -0500)
Found by Coverity:

*** CID 1372124:  Memory - illegal accesses  (OVERRUN)
/liblttng-ust/lttng-filter.c: 139 in print_op()
133
134     const char *print_op(enum filter_op op)
135     {
136             if (op >= NR_FILTER_OPS)
137                     return "UNKNOWN";
138             else
>>>     CID 1372124:  Memory - illegal accesses  (OVERRUN)
>>>     Overrunning array "opnames" of 74 8-byte elements at element index 78 (byte offset 624) using index "op" (which evaluates to 78).
139                     return opnames[op];
140     }
141
142     static
143     int apply_field_reloc(struct lttng_event *event,

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

index c74127520c4af5b377fa6db1e7ad439c12cab164..8114db6092b0b72365361733a394590ca3c46bed 100644 (file)
@@ -129,6 +129,20 @@ static const char *opnames[] = {
        [ FILTER_OP_GET_CONTEXT_REF_STRING ] = "GET_CONTEXT_REF_STRING",
        [ FILTER_OP_GET_CONTEXT_REF_S64 ] = "GET_CONTEXT_REF_S64",
        [ FILTER_OP_GET_CONTEXT_REF_DOUBLE ] = "GET_CONTEXT_REF_DOUBLE",
+
+       /* load userspace field ref */
+       [ FILTER_OP_LOAD_FIELD_REF_USER_STRING ] = "LOAD_FIELD_REF_USER_STRING",
+       [ FILTER_OP_LOAD_FIELD_REF_USER_SEQUENCE ] = "LOAD_FIELD_REF_USER_SEQUENCE",
+
+       /*
+        * load immediate star globbing pattern (literal string)
+        * from immediate.
+        */
+       [ FILTER_OP_LOAD_STAR_GLOB_STRING ] = "LOAD_STAR_GLOB_STRING",
+
+       /* globbing pattern binary operator: apply to */
+       [ FILTER_OP_EQ_STAR_GLOB_STRING ] = "EQ_STAR_GLOB_STRING",
+       [ FILTER_OP_NE_STAR_GLOB_STRING ] = "NE_STAR_GLOB_STRING",
 };
 
 const char *print_op(enum filter_op op)
This page took 0.025639 seconds and 4 git commands to generate.