Fix: validate that array expression contains constant
[lttng-tools.git] / src / lib / lttng-ctl / filter / filter-visitor-generate-ir.c
index 024aac6398ab068ac2d9a2ff860e7cd65f5d5287..1ea6fe38fd60853587bd20c17159562eb2049909 100644 (file)
@@ -77,7 +77,7 @@ enum ir_load_string_type get_literal_string_type(const char *string)
 }
 
 static
-struct ir_op *make_op_load_string(char *string, enum ir_side side)
+struct ir_op *make_op_load_string(const char *string, enum ir_side side)
 {
        struct ir_op *op;
 
@@ -187,7 +187,7 @@ struct ir_load_expression *create_load_expression(struct filter_node *node)
 {
        struct ir_load_expression *load_exp;
        struct ir_load_expression_op *load_exp_op, *prev_op;
-       char *str;
+       const char *str;
 
        /* Get forward chain. */
        node = load_expression_get_forward_chain(node);
@@ -244,6 +244,11 @@ struct ir_load_expression *create_load_expression(struct filter_node *node)
                                bracket_node != NULL;
                                bracket_node = bracket_node->u.expression.next_bracket) {
                        prev_op = load_exp_op;
+                       if (bracket_node->type != NODE_EXPRESSION ||
+                               bracket_node->u.expression.type != AST_EXP_CONSTANT) {
+                                       fprintf(stderr, "[error] Expecting constant index in array expression\n");
+                                       goto error;
+                               }
                        load_exp_op = calloc(sizeof(struct ir_load_expression_op), 1);
                        if (!load_exp_op)
                                goto error;
This page took 0.023966 seconds and 4 git commands to generate.