Fix: validate that array expression contains constant
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 25 May 2020 20:15:40 +0000 (16:15 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 13 Apr 2021 20:30:33 +0000 (16:30 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: Ic7ea2192b3bf0f5c32f5db8fce622f73b182906f

src/common/filter/filter-visitor-generate-ir.c

index b7bc17d18ce0bb742e9b848ef4a079ecff39dca8..fb5d815d9958f3bdbf816db74cb52cacffb5f59d 100644 (file)
@@ -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;
                                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;
                        load_exp_op = calloc(sizeof(struct ir_load_expression_op), 1);
                        if (!load_exp_op)
                                goto error;
This page took 0.027048 seconds and 4 git commands to generate.