Fix: sessiond: ODR violation results in memory corruption
[lttng-tools.git] / src / common / tracker.cpp
index 6bb84d0cad8175c8a879de39b056e03546099db0..e988599bae9a27a0c4859e6a577b191a5ff57094 100644 (file)
 
 #include <type_traits>
 
+namespace {
 struct process_attr_tracker_values_comm_header {
        uint32_t count;
-};
+} LTTNG_PACKED;
 
 struct process_attr_tracker_value_comm {
        /* enum lttng_process_attr_value_type */
@@ -32,7 +33,8 @@ struct process_attr_tracker_value_comm {
                /* Includes the '\0' terminator. */
                uint32_t name_len;
        } value;
-};
+} LTTNG_PACKED;
+} /* namespace */
 
 #define GET_INTEGRAL_COMM_VALUE(value_ptr, as_type)              \
        ((as_type)(std::is_signed<as_type>::value ? (value_ptr)->u._signed : \
@@ -71,7 +73,7 @@ enum lttng_error_code process_attr_value_from_comm(
 {
        char *name = NULL;
        enum lttng_error_code ret = LTTNG_OK;
-       struct process_attr_value *value = (process_attr_value *) zmalloc(sizeof(*value));
+       struct process_attr_value *value = zmalloc<process_attr_value>();
 
        if (!value) {
                ret = LTTNG_ERR_NOMEM;
@@ -214,7 +216,7 @@ static void process_attr_tracker_value_destructor(void *ptr)
 
 struct lttng_process_attr_values *lttng_process_attr_values_create(void)
 {
-       struct lttng_process_attr_values *values = (lttng_process_attr_values *) zmalloc(sizeof(*values));
+       struct lttng_process_attr_values *values = zmalloc<lttng_process_attr_values>();
 
        if (!values) {
                goto end;
@@ -426,7 +428,7 @@ struct process_attr_value *process_attr_value_copy(
                goto end;
        }
 
-       new_value = (process_attr_value *) zmalloc(sizeof(*new_value));
+       new_value = zmalloc<process_attr_value>();
        if (!new_value) {
                goto end;
        }
This page took 0.024152 seconds and 4 git commands to generate.