Fix: visitor-generate-ir.c: dereference after `NULL` check
[babeltrace.git] / src / plugins / ctf / common / metadata / visitor-generate-ir.c
index 3413ac17cd679b7f162d75eac1b4b941b7f9e244..7bad52667964e2a8c16355b69673c39137c4136d 100644 (file)
@@ -30,7 +30,7 @@
 #define BT_COMP_LOG_SELF_COMP (ctx->log_cfg.self_comp)
 #define BT_LOG_OUTPUT_LEVEL (ctx->log_cfg.log_level)
 #define BT_LOG_TAG "PLUGIN/CTF/META/IR-VISITOR"
-#include "plugins/comp-logging.h"
+#include "logging/comp-logging.h"
 
 #include <stdio.h>
 #include <unistd.h>
@@ -1009,7 +1009,7 @@ enum ctf_byte_order byte_order_from_unary_expr(struct ctx *ctx,
                struct ctf_node *unary_expr)
 {
        const char *str;
-       enum ctf_byte_order bo = -1;
+       enum ctf_byte_order bo = CTF_BYTE_ORDER_UNKNOWN;
 
        if (unary_expr->u.unary_expression.type != UNARY_STRING) {
                _BT_COMP_LOGE_NODE(unary_expr,
@@ -2329,7 +2329,7 @@ int visit_integer_decl(struct ctx *ctx,
                        }
 
                        byte_order = get_real_byte_order(ctx, right);
-                       if (byte_order == -1) {
+                       if (byte_order == CTF_BYTE_ORDER_UNKNOWN) {
                                _BT_COMP_LOGE_NODE(right,
                                        "Invalid `byte_order` attribute in integer field class: "
                                        "ret=%d", ret);
@@ -2676,7 +2676,7 @@ int visit_floating_point_number_decl(struct ctx *ctx,
                        }
 
                        byte_order = get_real_byte_order(ctx, right);
-                       if (byte_order == -1) {
+                       if (byte_order == CTF_BYTE_ORDER_UNKNOWN) {
                                _BT_COMP_LOGE_NODE(right,
                                        "Invalid `byte_order` attribute in floating point number field class: "
                                        "ret=%d", ret);
@@ -3173,6 +3173,7 @@ int visit_event_decl_entry(struct ctx *ctx, struct ctf_node *node,
                        _SET(set, _EVENT_FIELDS_SET);
                } else if (strcmp(left, "loglevel") == 0) {
                        uint64_t loglevel_value;
+                       bool is_log_level_known = true;
                        bt_event_class_log_level log_level = -1;
 
                        if (_IS_SET(set, _EVENT_LOG_LEVEL_SET)) {
@@ -3238,12 +3239,13 @@ int visit_event_decl_entry(struct ctx *ctx, struct ctf_node *node,
                                log_level = BT_EVENT_CLASS_LOG_LEVEL_DEBUG;
                                break;
                        default:
+                               is_log_level_known = false;
                                _BT_COMP_LOGW_NODE(node, "Not setting event class's log level because its value is unknown: "
                                        "log-level=%" PRIu64, loglevel_value);
                        }
 
-                       if (log_level != -1) {
-                               event_class->log_level = log_level;
+                       if (is_log_level_known) {
+                               ctf_event_class_set_log_level(event_class, log_level);
                        }
 
                        _SET(set, _EVENT_LOG_LEVEL_SET);
@@ -3984,7 +3986,7 @@ int visit_trace_decl_entry(struct ctx *ctx, struct ctf_node *node, int *set)
                                goto error;
                        }
 
-                       BT_ASSERT(ctx->ctf_tc->default_byte_order != -1);
+                       BT_ASSERT(ctx->ctf_tc->default_byte_order != CTF_BYTE_ORDER_UNKNOWN);
                        _SET(set, _TRACE_BYTE_ORDER_SET);
                } else if (strcmp(left, "packet.header") == 0) {
                        if (_IS_SET(set, _TRACE_PACKET_HEADER_SET)) {
@@ -4230,7 +4232,7 @@ int set_trace_byte_order(struct ctx *ctx, struct ctf_node *trace_node)
                                        struct ctf_node, siblings);
                                bo = byte_order_from_unary_expr(ctx,
                                        right_node);
-                               if (bo == -1) {
+                               if (bo == CTF_BYTE_ORDER_UNKNOWN) {
                                        _BT_COMP_LOGE_NODE(node,
                                                "Invalid `byte_order` attribute in trace (`trace` block): "
                                                "expecting `le`, `be`, or `network`.");
@@ -4712,7 +4714,9 @@ struct ctf_visitor_generate_ir *ctf_visitor_generate_ir_create(
        /* Create visitor's context */
        ctx = ctx_create(decoder_config);
        if (!ctx) {
-               BT_COMP_LOGE_STR("Cannot create visitor's context.");
+               BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, decoder_config->log_level,
+                       decoder_config->self_comp,
+                       "Cannot create visitor's context.");
                goto error;
        }
 
@@ -4780,7 +4784,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                 * have the native byte order yet, and we don't have any
                 * trace block yet, then fail with EINCOMPLETE.
                 */
-               if (ctx->ctf_tc->default_byte_order == -1) {
+               if (ctx->ctf_tc->default_byte_order == CTF_BYTE_ORDER_UNKNOWN) {
                        bt_list_for_each_entry(iter, &node->u.root.trace, siblings) {
                                if (got_trace_decl) {
                                        _BT_COMP_LOGE_NODE(node,
@@ -4810,7 +4814,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                BT_ASSERT(ctx->ctf_tc->default_byte_order == CTF_BYTE_ORDER_LITTLE ||
                        ctx->ctf_tc->default_byte_order == CTF_BYTE_ORDER_BIG);
                BT_ASSERT(ctx->current_scope &&
-                               ctx->current_scope->parent_scope == NULL);
+                               !ctx->current_scope->parent_scope);
 
                /* Environment */
                bt_list_for_each_entry(iter, &node->u.root.env, siblings) {
@@ -4824,7 +4828,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                }
 
                BT_ASSERT(ctx->current_scope &&
-                       ctx->current_scope->parent_scope == NULL);
+                       !ctx->current_scope->parent_scope);
 
                /*
                 * Visit clock blocks.
@@ -4840,7 +4844,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                }
 
                BT_ASSERT(ctx->current_scope &&
-                       ctx->current_scope->parent_scope == NULL);
+                       !ctx->current_scope->parent_scope);
 
                /*
                 * Visit root declarations next, as they can be used by any
@@ -4858,7 +4862,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                }
 
                BT_ASSERT(ctx->current_scope &&
-                       ctx->current_scope->parent_scope == NULL);
+                       !ctx->current_scope->parent_scope);
 
                /* Callsite blocks are not supported */
                bt_list_for_each_entry(iter, &node->u.root.callsite, siblings) {
@@ -4867,7 +4871,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                }
 
                BT_ASSERT(ctx->current_scope &&
-                       ctx->current_scope->parent_scope == NULL);
+                       !ctx->current_scope->parent_scope);
 
                /* Trace */
                bt_list_for_each_entry(iter, &node->u.root.trace, siblings) {
@@ -4881,7 +4885,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                }
 
                BT_ASSERT(ctx->current_scope &&
-                       ctx->current_scope->parent_scope == NULL);
+                       !ctx->current_scope->parent_scope);
 
                /* Streams */
                bt_list_for_each_entry(iter, &node->u.root.stream, siblings) {
@@ -4895,7 +4899,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                }
 
                BT_ASSERT(ctx->current_scope &&
-                       ctx->current_scope->parent_scope == NULL);
+                       !ctx->current_scope->parent_scope);
 
                /* Events */
                bt_list_for_each_entry(iter, &node->u.root.event, siblings) {
@@ -4909,7 +4913,7 @@ int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
                }
 
                BT_ASSERT(ctx->current_scope &&
-                       ctx->current_scope->parent_scope == NULL);
+                       !ctx->current_scope->parent_scope);
                break;
        }
        default:
This page took 0.027547 seconds and 4 git commands to generate.