Fix: sessiond: ODR violation results in memory corruption
[lttng-tools.git] / src / common / error-query.cpp
index 5d369c9e07563bfdba794694b69b22e1c74bb9a0..31de0ee5e764c7d1b0ea98a784668afaedbdc304 100644 (file)
@@ -7,23 +7,34 @@
  *
  */
 
-#include <common/dynamic-array.h>
-#include <common/error.h>
-#include <common/macros.h>
-#include <common/mi-lttng.h>
-#include <common/sessiond-comm/sessiond-comm.h>
-#include <lttng/action/action-internal.h>
-#include <lttng/action/list-internal.h>
-#include <lttng/action/path-internal.h>
-#include <lttng/error-query-internal.h>
+#include <common/dynamic-array.hpp>
+#include <common/error.hpp>
+#include <common/macros.hpp>
+#include <common/mi-lttng.hpp>
+#include <common/sessiond-comm/sessiond-comm.hpp>
+#include <lttng/action/action-internal.hpp>
+#include <lttng/action/list-internal.hpp>
+#include <lttng/action/path-internal.hpp>
+#include <lttng/error-query-internal.hpp>
 #include <lttng/error-query.h>
-#include <lttng/trigger/trigger-internal.h>
+#include <lttng/trigger/trigger-internal.hpp>
 #include <stddef.h>
 
 struct lttng_error_query {
        enum lttng_error_query_target_type target_type;
 };
 
+struct lttng_error_query_result {
+       enum lttng_error_query_result_type type;
+       char *name;
+       char *description;
+};
+
+struct lttng_error_query_results {
+       struct lttng_dynamic_pointer_array results;
+};
+
+namespace {
 struct lttng_error_query_comm {
        /* enum lttng_error_query_target_type */
        int8_t target_type;
@@ -50,12 +61,6 @@ struct lttng_error_query_action {
        struct lttng_action_path action_path;
 };
 
-struct lttng_error_query_result {
-       enum lttng_error_query_result_type type;
-       char *name;
-       char *description;
-};
-
 struct lttng_error_query_result_comm {
        /* enum lttng_error_query_result_type */
        uint8_t type;
@@ -81,10 +86,7 @@ struct lttng_error_query_results_comm {
        /* `count` instances of `struct lttng_error_query_result` follow. */
        char payload[];
 } LTTNG_PACKED;
-
-struct lttng_error_query_results {
-       struct lttng_dynamic_pointer_array results;
-};
+} /* namespace */
 
 static
 enum lttng_error_code lttng_error_query_result_mi_serialize(
@@ -111,7 +113,7 @@ struct lttng_error_query *lttng_error_query_trigger_create(
                goto end;
        }
 
-       query = (lttng_error_query_trigger *) zmalloc(sizeof(*query));
+       query = zmalloc<lttng_error_query_trigger>();
        if (!query) {
                PERROR("Failed to allocate trigger error query");
                goto error;
@@ -142,7 +144,7 @@ struct lttng_error_query *lttng_error_query_condition_create(
                goto end;
        }
 
-       query = (lttng_error_query_condition *) zmalloc(sizeof(*query));
+       query = zmalloc<lttng_error_query_condition>();
        if (!query) {
                PERROR("Failed to allocate condition error query");
                goto error;
@@ -221,7 +223,7 @@ struct lttng_error_query *lttng_error_query_action_create(
                goto end;
        }
 
-       query = (lttng_error_query_action *) zmalloc(sizeof(*query));
+       query = zmalloc<lttng_error_query_action>();
        if (!query) {
                PERROR("Failed to allocate action error query");
                goto error;
@@ -388,7 +390,7 @@ lttng_error_query_result_counter_create(
        int init_ret;
        struct lttng_error_query_result_counter *counter;
 
-       counter = (lttng_error_query_result_counter *) zmalloc(sizeof(*counter));
+       counter = zmalloc<lttng_error_query_result_counter>();
        if (!counter) {
                PERROR("Failed to allocate error query counter result");
                goto end;
@@ -419,7 +421,7 @@ void destroy_result(void *ptr)
 
 struct lttng_error_query_results *lttng_error_query_results_create(void)
 {
-       struct lttng_error_query_results *set = (lttng_error_query_results *) zmalloc(sizeof(*set));
+       struct lttng_error_query_results *set = zmalloc<lttng_error_query_results>();
 
        if (!set) {
                PERROR("Failed to allocate an error query result set");
@@ -536,7 +538,7 @@ int lttng_error_query_results_serialize(
        const size_t result_count = lttng_dynamic_pointer_array_get_count(
                        &results->results);
        const struct lttng_error_query_results_comm header = {
-               .count = (typeof(header.count)) result_count,
+               .count = (decltype(header.count)) result_count,
        };
 
        /* Header. */
@@ -744,7 +746,7 @@ int lttng_error_query_serialize(const struct lttng_error_query *query,
 {
        int ret;
        const struct lttng_error_query_comm header = {
-               .target_type = (typeof(header.target_type)) query->target_type,
+               .target_type = (decltype(header.target_type)) query->target_type,
        };
 
        ret = lttng_dynamic_buffer_append(
This page took 0.026072 seconds and 4 git commands to generate.