Fix: sessiond: ODR violation results in memory corruption
[lttng-tools.git] / src / common / session-descriptor.cpp
index 36b6fc4eb073de81b99d17b619a04d238b220be1..642c6399fc6e7728693a2d27ff07326b9ded2432 100644 (file)
@@ -4,18 +4,20 @@
  * SPDX-License-Identifier: LGPL-2.1-only
  */
 
-#include <lttng/session-descriptor-internal.h>
-#include <common/macros.h>
-#include <common/uri.h>
-#include <common/defaults.h>
-#include <common/error.h>
+#include <lttng/session-descriptor-internal.hpp>
+#include <common/macros.hpp>
+#include <common/uri.hpp>
+#include <common/defaults.hpp>
+#include <common/error.hpp>
 #include <time.h>
 #include <stdio.h>
 
+namespace {
 struct lttng_session_descriptor_network_location {
        struct lttng_uri *control;
        struct lttng_uri *data;
 };
+} /* namespace */
 
 struct lttng_session_descriptor {
        enum lttng_session_descriptor_type type;
@@ -32,6 +34,7 @@ struct lttng_session_descriptor {
        } output;
 };
 
+namespace {
 struct lttng_session_descriptor_snapshot {
        struct lttng_session_descriptor base;
        /*
@@ -61,6 +64,7 @@ struct lttng_session_descriptor_live_comm {
        /* Live-specific parameters. */
        uint64_t live_timer_us;
 } LTTNG_PACKED;
+} /* namespace */
 
 static
 struct lttng_uri *uri_copy(const struct lttng_uri *uri)
@@ -71,7 +75,7 @@ struct lttng_uri *uri_copy(const struct lttng_uri *uri)
                goto end;
        }
 
-       new_uri = (lttng_uri *) zmalloc(sizeof(*new_uri));
+       new_uri = zmalloc<lttng_uri>();
        if (!new_uri) {
                goto end;
        }
@@ -179,8 +183,8 @@ int network_location_set_from_uri_strings(
         * session descriptors expect individually allocated lttng_uris.
         */
        if (uri_count == 2) {
-               control_uri = (lttng_uri *) zmalloc(sizeof(*control_uri));
-               data_uri = (lttng_uri *) zmalloc(sizeof(*data_uri));
+               control_uri = zmalloc<lttng_uri>();
+               data_uri = zmalloc<lttng_uri>();
                if (!control_uri || !data_uri) {
                        ret = -1;
                        goto end;
@@ -208,7 +212,7 @@ lttng_session_descriptor_create(const char *name)
 {
        struct lttng_session_descriptor *descriptor;
 
-       descriptor = (lttng_session_descriptor *) zmalloc(sizeof(*descriptor));
+       descriptor = zmalloc<lttng_session_descriptor>();
        if (!descriptor) {
                goto error;
        }
@@ -334,7 +338,7 @@ _lttng_session_descriptor_snapshot_create(const char *name)
 {
        struct lttng_session_descriptor_snapshot *descriptor;
 
-       descriptor = (lttng_session_descriptor_snapshot *) zmalloc(sizeof(*descriptor));
+       descriptor = zmalloc<lttng_session_descriptor_snapshot>();
        if (!descriptor) {
                goto error;
        }
@@ -477,7 +481,7 @@ _lttng_session_descriptor_live_create(const char *name,
        if (live_timer_interval_us == 0) {
                goto error;
        }
-       descriptor = (lttng_session_descriptor_live *) zmalloc(sizeof(*descriptor));
+       descriptor = zmalloc<lttng_session_descriptor_live>();
        if (!descriptor) {
                goto error;
        }
@@ -709,7 +713,7 @@ skip_name:
                }
 
                uri = (typeof(uri)) current_view.data;
-               uris[i] = (lttng_uri *) zmalloc(sizeof(*uri));
+               uris[i] = zmalloc<lttng_uri>();
                if (!uris[i]) {
                        ret = -1;
                        goto end;
@@ -816,7 +820,10 @@ int lttng_session_descriptor_serialize(
                        .output_type = (uint8_t) descriptor->output_type,
                        .name_len = (uint32_t) (descriptor->name ?
                                strlen(descriptor->name) + 1 : 0),
-               }
+                       .uri_count = 0,
+               },
+               .live_timer_us = 0,
+
        };
        const void *header_ptr = NULL;
        size_t header_size;
This page took 0.024585 seconds and 4 git commands to generate.