X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Frunas.cpp;h=2c762d5ee797f3a98c92f1f59527a1a9ae92f37c;hb=406a14fe0eadfc78e6f143c749df0ef91e15bef5;hp=ee3451321e7b8cbafb809fc4d3fe491cb6ee0a30;hpb=f46376a14da2eb796690cb4e718e8b213839d6ea;p=lttng-tools.git diff --git a/src/common/runas.cpp b/src/common/runas.cpp index ee3451321..2c762d5ee 100644 --- a/src/common/runas.cpp +++ b/src/common/runas.cpp @@ -22,31 +22,27 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include +#include +#include -#include "runas.h" +#include "runas.hpp" #define GETPW_BUFFER_FALLBACK_SIZE 4096 -struct run_as_data; -struct run_as_ret; -typedef int (*run_as_fct)(struct run_as_data *data, struct run_as_ret *ret_value); - enum run_as_cmd { RUN_AS_MKDIR, RUN_AS_MKDIRAT, @@ -67,6 +63,11 @@ enum run_as_cmd { RUN_AS_GENERATE_FILTER_BYTECODE, }; +namespace { +struct run_as_data; +struct run_as_ret; +typedef int (*run_as_fct)(struct run_as_data *data, struct run_as_ret *ret_value); + struct run_as_mkdir_data { int dirfd; char path[LTTNG_PATH_MAX]; @@ -210,7 +211,7 @@ struct run_as_command_properties { bool use_cwd_fd; }; -static const struct run_as_command_properties command_properties[] = { +const struct run_as_command_properties command_properties[] = { { .in_fds_offset = offsetof(struct run_as_data, u.mkdir.dirfd), .out_fds_offset = -1, @@ -341,9 +342,10 @@ struct run_as_worker_data { }; /* Single global worker per process (for now). */ -static run_as_worker_data *global_worker; +run_as_worker_data *global_worker; /* Lock protecting the worker. */ -static pthread_mutex_t worker_lock = PTHREAD_MUTEX_INITIALIZER; +pthread_mutex_t worker_lock = PTHREAD_MUTEX_INITIALIZER; +} /* namespace */ #ifdef VALGRIND static @@ -629,16 +631,18 @@ end: } #else static -int _extract_elf_symbol_offset(struct run_as_data *data, - struct run_as_ret *ret_value) +int _extract_elf_symbol_offset( + struct run_as_data *data __attribute__((unused)), + struct run_as_ret *ret_value __attribute__((unused))) { ERR("Unimplemented runas command RUN_AS_EXTRACT_ELF_SYMBOL_OFFSET"); return -1; } static -int _extract_sdt_probe_offsets(struct run_as_data *data, - struct run_as_ret *ret_value) +int _extract_sdt_probe_offsets( + struct run_as_data *data __attribute__((unused)), + struct run_as_ret *ret_value __attribute__((unused))) { ERR("Unimplemented runas command RUN_AS_EXTRACT_SDT_PROBE_OFFSETS"); return -1; @@ -928,7 +932,7 @@ static int get_user_infos_from_uid( get_pw_buf_size = (size_t) raw_get_pw_buf_size; - buf = (char *) zmalloc(get_pw_buf_size); + buf = calloc(get_pw_buf_size); if (buf == NULL) { PERROR("Failed to allocate buffer to get password file entries"); goto error; @@ -1456,7 +1460,7 @@ int run_as_create_worker_no_lock(const char *procname, ret = 0; goto end; } - worker = (run_as_worker_data *) zmalloc(sizeof(*worker)); + worker = zmalloc(); if (!worker) { ret = -ENOMEM; goto end; @@ -1957,7 +1961,7 @@ int run_as_extract_sdt_probe_offsets(int fd, const char* provider_name, } *num_offset = run_as_ret.u.extract_sdt_probe_offsets.num_offset; - *offsets = (uint64_t *) zmalloc(*num_offset * sizeof(uint64_t)); + *offsets = calloc(*num_offset); if (!*offsets) { ret = -ENOMEM; goto error; @@ -1999,7 +2003,7 @@ int run_as_generate_filter_bytecode(const char *filter_expression, view_bytecode = (const struct lttng_bytecode *) run_as_ret.u.generate_filter_bytecode.bytecode; - local_bytecode = (lttng_bytecode *) zmalloc(sizeof(*local_bytecode) + view_bytecode->len); + local_bytecode = calloc(view_bytecode->len); if (!local_bytecode) { ret = -ENOMEM; goto error;