Fix: Possible dereference of null pointers
[lttng-tools.git] / src / lib / lttng-ctl / filter / filter-visitor-set-parent.c
index bd5e5a343cc884a9c7ff4c8223489cf4b23416fd..458688da44a13b4d924be20162b7d15e46f575eb 100644 (file)
@@ -36,6 +36,11 @@ int update_child(struct filter_node *parent,
                struct filter_node *old_child,
                struct filter_node *new_child)
 {
                struct filter_node *old_child,
                struct filter_node *new_child)
 {
+       if (!parent) {
+               fprintf(stderr, "[error] %s: NULL parent\n", __func__);
+               return -EINVAL;
+       }
+
        switch (parent->type) {
        case NODE_UNKNOWN:
        default:
        switch (parent->type) {
        case NODE_UNKNOWN:
        default:
@@ -93,7 +98,8 @@ int recursive_visit_set_parent(struct filter_node *node,
                        return -EINVAL;
                case AST_EXP_NESTED:
                        return recursive_visit_set_parent(node->u.expression.u.child, node);
                        return -EINVAL;
                case AST_EXP_NESTED:
                        return recursive_visit_set_parent(node->u.expression.u.child, node);
-               case AST_EXP_IDENTIFIER:
+               case AST_EXP_IDENTIFIER:        /* fall-through */
+               case AST_EXP_GLOBAL_IDENTIFIER:
                        {
                                struct filter_node *orig_node = node;
 
                        {
                                struct filter_node *orig_node = node;
 
@@ -102,7 +108,8 @@ int recursive_visit_set_parent(struct filter_node *node,
 
                                        prev = node->u.expression.prev;
                                        if (prev->type != NODE_EXPRESSION ||
 
                                        prev = node->u.expression.prev;
                                        if (prev->type != NODE_EXPRESSION ||
-                                               prev->u.expression.type != AST_EXP_IDENTIFIER) {
+                                               (prev->u.expression.type != AST_EXP_IDENTIFIER
+                                               && prev->u.expression.type != AST_EXP_GLOBAL_IDENTIFIER)) {
                                                fprintf(stderr, "[error] %s: expecting identifier before link\n", __func__);
                                                return -EINVAL;
                                        }
                                                fprintf(stderr, "[error] %s: expecting identifier before link\n", __func__);
                                                return -EINVAL;
                                        }
This page took 0.023405 seconds and 4 git commands to generate.