X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fmain.c;h=5a73b68dfed46fb8c1878725b3727bb2c16e2787;hp=38230dbbadda372637e0621395292c4c93fbce41;hb=8b270bdb4dccf5571180a9906084126e90eec949;hpb=ced2f82009443bb90d8e385e86717c78c249adb7 diff --git a/ltt-sessiond/main.c b/ltt-sessiond/main.c index 38230dbba..5a73b68df 100644 --- a/ltt-sessiond/main.c +++ b/ltt-sessiond/main.c @@ -41,9 +41,9 @@ #include /* URCU list library (-lurcu) */ #include +#include #include "context.h" -#include "liblttsessiondcomm.h" #include "ltt-sessiond.h" #include "lttngerr.h" #include "kernel-ctl.h" @@ -288,7 +288,9 @@ static int send_kconsumerd_channel_fds(int sock, struct ltt_kernel_channel *chan lkm.fd = stream->fd; lkm.state = stream->state; lkm.max_sb_size = channel->channel->attr.subbuf_size; + lkm.output = DEFAULT_KERNEL_CHANNEL_OUTPUT; strncpy(lkm.path_name, stream->pathname, PATH_MAX); + lkm.path_name[PATH_MAX - 1] = '\0'; DBG("Sending fd %d to kconsumerd", lkm.fd); @@ -337,7 +339,9 @@ static int send_kconsumerd_fds(int sock, struct ltt_kernel_session *session) lkm.fd = session->metadata_stream_fd; lkm.state = ACTIVE_FD; lkm.max_sb_size = session->metadata->conf->attr.subbuf_size; + lkm.output = DEFAULT_KERNEL_CHANNEL_OUTPUT; strncpy(lkm.path_name, session->metadata->pathname, PATH_MAX); + lkm.path_name[PATH_MAX - 1] = '\0'; ret = lttcomm_send_fds_unix_sock(sock, &lkm, &lkm.fd, 1, sizeof(lkm)); if (ret < 0) { @@ -1243,8 +1247,15 @@ static int create_kernel_session(struct ltt_session *session) goto error; } - ret = mkdir_recursive(session->path, S_IRWXU | S_IRWXG, - geteuid(), allowed_group()); + ret = asprintf(&session->kernel_session->trace_path, "%s/kernel", + session->path); + if (ret < 0) { + perror("asprintf kernel traces path"); + goto error; + } + + ret = mkdir_recursive(session->kernel_session->trace_path, + S_IRWXU | S_IRWXG, geteuid(), allowed_group()); if (ret < 0) { if (ret != -EEXIST) { ERR("Trace directory creation error"); @@ -1275,7 +1286,9 @@ static void list_lttng_sessions(struct lttng_session *sessions) */ cds_list_for_each_entry(session, &session_list_ptr->head, list) { strncpy(sessions[i].path, session->path, PATH_MAX); + sessions[i].path[PATH_MAX - 1] = '\0'; strncpy(sessions[i].name, session->name, NAME_MAX); + sessions[i].name[NAME_MAX - 1] = '\0'; i++; } } @@ -1321,6 +1334,7 @@ static void list_lttng_events(struct ltt_kernel_channel *kchan, /* Kernel channels */ cds_list_for_each_entry(event, &kchan->events_list.head , list) { strncpy(events[i].name, event->event->name, LTTNG_SYMBOL_NAME_LEN); + events[i].name[LTTNG_SYMBOL_NAME_LEN - 1] = '\0'; events[i].enabled = event->enabled; switch (event->event->instrumentation) { case LTTNG_KERNEL_TRACEPOINT: @@ -1355,7 +1369,9 @@ static int process_client_msg(struct command_ctx *cmd_ctx) DBG("Processing client command %d", cmd_ctx->lsm->cmd_type); - /* Listing commands don't need a session */ + /* + * Commands that DO NOT need a session. + */ switch (cmd_ctx->lsm->cmd_type) { case LTTNG_CREATE_SESSION: case LTTNG_LIST_SESSIONS: @@ -1444,6 +1460,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx) strncpy(kctx.u.perf_counter.name, cmd_ctx->lsm->u.context.ctx.u.perf_counter.name, LTTNG_SYMBOL_NAME_LEN); + kctx.u.perf_counter.name[LTTNG_SYMBOL_NAME_LEN - 1] = '\0'; /* Add kernel context to kernel tracer. See context.c */ ret = add_kernel_context(cmd_ctx->session->kernel_session, &kctx, @@ -1603,7 +1620,8 @@ static int process_client_msg(struct command_ctx *cmd_ctx) DBG("Creating kernel channel"); ret = kernel_create_channel(cmd_ctx->session->kernel_session, - &cmd_ctx->lsm->u.channel.chan, cmd_ctx->session->path); + &cmd_ctx->lsm->u.channel.chan, + cmd_ctx->session->kernel_session->trace_path); if (ret < 0) { ret = LTTCOMM_KERN_CHAN_FAIL; goto error; @@ -1666,7 +1684,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx) } ret = kernel_create_channel(cmd_ctx->session->kernel_session, - chan, cmd_ctx->session->path); + chan, cmd_ctx->session->kernel_session->trace_path); if (ret < 0) { ret = LTTCOMM_KERN_CHAN_FAIL; goto error; @@ -1738,7 +1756,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx) } ret = kernel_create_channel(cmd_ctx->session->kernel_session, - chan, cmd_ctx->session->path); + chan, cmd_ctx->session->kernel_session->trace_path); if (ret < 0) { ret = LTTCOMM_KERN_CHAN_FAIL; goto error; @@ -1843,7 +1861,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx) if (cmd_ctx->session->kernel_session->metadata == NULL) { DBG("Open kernel metadata"); ret = kernel_open_metadata(cmd_ctx->session->kernel_session, - cmd_ctx->session->path); + cmd_ctx->session->kernel_session->trace_path); if (ret < 0) { ret = LTTCOMM_KERN_META_FAIL; goto error;