Fix: sessiond: ODR violation results in memory corruption
[lttng-tools.git] / src / common / trace-chunk.cpp
index 92cbd3c342d6daac671033b49c0262517fd2d28b..beae46ef3110c416bd271aeb8125edef70f33502 100644 (file)
@@ -5,23 +5,23 @@
  *
  */
 
-#include <common/compat/directory-handle.h>
-#include <common/credentials.h>
-#include <common/defaults.h>
-#include <common/dynamic-array.h>
-#include <common/error.h>
-#include <common/fd-tracker/fd-tracker.h>
-#include <common/fd-tracker/utils.h>
-#include <common/fs-handle.h>
-#include <common/fs-handle-internal.h>
-#include <common/hashtable/hashtable.h>
-#include <common/hashtable/utils.h>
-#include <common/optional.h>
-#include <common/string-utils/format.h>
-#include <common/time.h>
-#include <common/trace-chunk-registry.h>
-#include <common/trace-chunk.h>
-#include <common/utils.h>
+#include <common/compat/directory-handle.hpp>
+#include <common/credentials.hpp>
+#include <common/defaults.hpp>
+#include <common/dynamic-array.hpp>
+#include <common/error.hpp>
+#include <common/fd-tracker/fd-tracker.hpp>
+#include <common/fd-tracker/utils.hpp>
+#include <common/fs-handle.hpp>
+#include <common/fs-handle-internal.hpp>
+#include <common/hashtable/hashtable.hpp>
+#include <common/hashtable/utils.hpp>
+#include <common/optional.hpp>
+#include <common/string-utils/format.hpp>
+#include <common/time.hpp>
+#include <common/trace-chunk-registry.hpp>
+#include <common/trace-chunk.hpp>
+#include <common/utils.hpp>
 #include <lttng/constant.h>
 
 #include <inttypes.h>
@@ -64,10 +64,12 @@ static
 enum lttng_trace_chunk_status lttng_trace_chunk_rename_path_no_lock(
                struct lttng_trace_chunk *chunk, const char *path);
 
+namespace {
 struct chunk_credentials {
        bool use_current_user;
        struct lttng_credentials user;
 };
+} /* namespace */
 
 /*
  * NOTE: Make sure to update:
@@ -120,6 +122,7 @@ struct lttng_trace_chunk {
        struct fd_tracker *fd_tracker;
 };
 
+namespace {
 /* A trace chunk is uniquely identified by its (session id, chunk id) tuple. */
 struct lttng_trace_chunk_registry_element {
        struct lttng_trace_chunk chunk;
@@ -130,11 +133,13 @@ struct lttng_trace_chunk_registry_element {
        /* call_rcu delayed reclaim. */
        struct rcu_head rcu_node;
 };
+} /* namespace */
 
 struct lttng_trace_chunk_registry {
        struct cds_lfht *ht;
 };
 
+namespace {
 struct fs_handle_untracked {
        struct fs_handle parent;
        int fd;
@@ -143,6 +148,7 @@ struct fs_handle_untracked {
                char *path;
        } location;
 };
+} /* namespace */
 
 static
 int fs_handle_untracked_get_fd(struct fs_handle *handle);
@@ -203,7 +209,7 @@ struct fs_handle *fs_handle_untracked_create(
                goto end;
        }
 
-       handle = (fs_handle_untracked *) zmalloc(sizeof(typeof(*handle)));
+       handle = zmalloc<fs_handle_untracked>();
        if (!handle) {
                PERROR("Failed to allocate untracked filesystem handle");
                goto end;
@@ -346,7 +352,7 @@ char *generate_chunk_name(uint64_t chunk_id, time_t creation_timestamp,
                        goto error;
                }
        }
-       new_name = (char *) zmalloc(GENERATED_CHUNK_NAME_LEN);
+       new_name = calloc<char>(GENERATED_CHUNK_NAME_LEN);
        if (!new_name) {
                ERR("Failed to allocate buffer for automatically-generated trace chunk name");
                goto error;
@@ -399,7 +405,7 @@ struct lttng_trace_chunk *lttng_trace_chunk_allocate(void)
 {
        struct lttng_trace_chunk *chunk = NULL;
 
-       chunk = (lttng_trace_chunk *) zmalloc(sizeof(*chunk));
+       chunk = zmalloc<lttng_trace_chunk>();
        if (!chunk) {
                ERR("Failed to allocate trace chunk");
                goto end;
@@ -1930,7 +1936,7 @@ struct lttng_trace_chunk_registry *lttng_trace_chunk_registry_create(void)
 {
        struct lttng_trace_chunk_registry *registry;
 
-       registry = (lttng_trace_chunk_registry *) zmalloc(sizeof(*registry));
+       registry = zmalloc<lttng_trace_chunk_registry>();
        if (!registry) {
                goto end;
        }
@@ -1966,7 +1972,7 @@ lttng_trace_chunk_registry_element_create_from_chunk(
                struct lttng_trace_chunk *chunk, uint64_t session_id)
 {
        struct lttng_trace_chunk_registry_element *element =
-               (lttng_trace_chunk_registry_element *) zmalloc(sizeof(*element));
+               zmalloc<lttng_trace_chunk_registry_element>();
 
        if (!element) {
                goto end;
This page took 0.024958 seconds and 4 git commands to generate.